Spec-Zone.ru › Dart 2

dart:collection

Метод singleWhere

E singleWhere(
  1. bool test(
    1. E value
    ),
  2. {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.18.5/dart-collection/SetMixin/singleWhere.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API