Spec-Zone.ru › Dart 2

dart:collection

метод singleWhere

E singleWhere(
  1. bool test(
    1. E element
    ),
  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 element), {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/IterableMixin/singleWhere.html

Spec-Zone.ru

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