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;
}