метод singleWhere
-
bool test(
- E value
- {E orElse( )?}
override
Возвращает единственный элемент, удовлетворяющий test.
Проверяет элементы, чтобы определить, возвращает ли test(element) значение true. Если test удовлетворяет ровно один элемент, возвращается этот элемент. Если найдено более одного подходящего элемента, выбрасывается StateError. Если подходящий элемент не найден, возвращается результат orElse. Если orElse не указан, по умолчанию выбрасывается StateError.
Пример:
final numbers = <int>[2, 2, 10]; var result = numbers.singleWhere((element) => element > 5); // 10
Если подходящий элемент не найден, вместо него возвращается результат вызова orElse.
result = numbers.singleWhere((element) => element == 1,
orElse: () => -1); // -1 Подходящий элемент должен быть не более чем один.
result = numbers.singleWhere((element) => element == 2); // Throws Error.
Реализация
E singleWhere(bool test(E value), {E Function()? orElse}) {
late E result;
bool foundMatching = false;
for (E element in this) {
if (test(element)) {
if (foundMatching) {
throw IterableElementError.tooMany();
}
result = element;
foundMatching = true;
}
}
if (foundMatching) return result;
if (orElse != null) return orElse();
throw IterableElementError.noElement();
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-collection/SetMixin/singleWhere.html