Spec-Zone.ru › Dart 2

dart:async

Метод distinct

Stream<T> distinct(
  1. [bool equals(
    1. T previous,
    2. T next
    )?]
)

Пропускает события данных, если они равны предыдущему событию данных.

Возвращаемый поток предоставляет те же события, что и этот поток, за исключением того, что он никогда не предоставляет два последовательных события данных, которые равны. То есть ошибки передаются в возвращаемый поток, а события данных передаются, если они отличаются от последнего выданного события данных.

Равенство определяется предоставленным методом equals. Если он не указан, используется оператор '==' для последнего предоставленного элемента данных.

Если equals выбрасывает исключение, событие данных заменяется событием ошибки, содержащим выброшенную ошибку. Поведение эквивалентно тому, как если бы исходный поток выдал событие ошибки, и это не меняет последнее выданное событие данных.

Возвращаемый поток является широковещательным, если таким является этот поток. Если широковещательный поток прослушивается более одного раза, каждая подписка отдельно выполняет проверку equals.

Пример:

final stream = Stream.fromIterable([2, 6, 6, 8, 12, 8, 8, 2]).distinct();
stream.forEach(print); // Outputs events: 2,6,8,12,8,2.

Реализация

Stream<T> distinct([bool equals(T previous, T next)?]) {
  return new _DistinctStream<T>(this, equals);
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Stream/distinct.html

Spec-Zone.ru

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