lastOrNull 属性

T? lastOrNull

此可迭代的最后一个元素,如果可迭代为空,则为 null

此计算可能不太高效。最后一个值可能通过遍历整个可迭代类型并临时存储每个值来找到。这个过程只遍历可迭代一次。如果多次遍历不是问题,对于某些可迭代类型来说,可能更高效的做法是

var lastOrNull = iterable.isEmpty ? null : iterable.last;

实现

T? get lastOrNull {
  if (this is EfficientLengthIterable) {
    if (isEmpty) return null;
    return last;
  }
  var iterator = this.iterator;
  if (!iterator.moveNext()) return null;
  T result;
  do {
    result = iterator.current;
  } while (iterator.moveNext());
  return result;
}