IterableExtensions<T>#
Annotations: @Since.new("3.0")
Operations on iterables.
Properties#
firstOrNull extension no setter#
The first element of this iterator, or null if the iterable is empty.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
T? get firstOrNull {
var iterator = this.iterator;
if (iterator.moveNext()) return iterator.current;
return null;
}
indexed extension no setter#
Pairs of elements of the indices and elements of this iterable.
The elements are (0, this.first) through
(this.length - 1, this.last), in index/iteration order.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
@pragma('vm:prefer-inline')
Iterable<(int, T)> get indexed => IndexedIterable<T>(this, 0);
lastOrNull extension no setter#
The last element of this iterable, or null if the iterable is empty.
This computation may not be efficient. The last value is potentially found by iterating the entire iterable and temporarily storing every value. The process only iterates the iterable once. If iterating more than once is not a problem, it may be more efficient for some iterables to do:
var lastOrNull = iterable.isEmpty ? null : iterable.last;
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
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;
}
singleOrNull extension no setter#
The single element of this iterator, or null.
If the iterator has precisely one element, this is that element.
Otherwise, if the iterator has zero elements, or it has two or more,
the value is null.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
T? get singleOrNull {
var iterator = this.iterator;
if (iterator.moveNext()) {
var result = iterator.current;
if (!iterator.moveNext()) return result;
}
return null;
}
Methods#
elementAtOrNull() extension#
The element at position index of this iterable, or null.
The index is zero based, and must be non-negative.
Returns the result of elementAt(index) if the iterable has
at least index + 1 elements, and null otherwise.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
T? elementAtOrNull(int index) {
RangeError.checkNotNegative(index, "index");
if (this is EfficientLengthIterable) {
if (index >= length) return null;
return elementAt(index);
}
var iterator = this.iterator;
do {
if (!iterator.moveNext()) return null;
} while (--index >= 0);
return iterator.current;
}