Метод singleWhere
-
bool test(
- E элемент
- {E orElse( )?}
Возвращает единственный элемент, который удовлетворяет 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 element), {E 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.18.5/dart-core/Iterable/singleWhere.html