Spec-Zone.ru › Dart 2

dart:async

map<S> метод

Stream<S> map<S>(
  1. S convert(
    1. T event
    )
)

Преобразует каждый элемент этого потока в новое событие потока.

Создает новый поток, который преобразует каждый элемент этого потока в новое значение с помощью функции convert и передает результат.

Для каждого события данных o в этом потоке возвращаемый поток предоставляет событие данных со значением convert(o). Если convert выбрасывает исключение, возвращаемый поток вместо этого сообщает о нем как о событии ошибки.

События ошибки и завершения без изменений передаются в возвращаемый поток.

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

В отличие от метода transform, этот метод не рассматривает поток как набор фрагментов одного значения. Вместо этого каждое событие преобразуется независимо от предыдущих и последующих событий, что не всегда может быть корректно. Например, кодирование или декодирование UTF-8 даст неверные результаты, если суррогатная пара или многобайтовая последовательность UTF-8 разделена на отдельные события, которые затем пытаются кодировать или декодировать независимо.

Пример:

final stream =
    Stream<int>.periodic(const Duration(seconds: 1), (count) => count)
        .take(5);

final calculationStream =
    stream.map<String>((event) => 'Square: ${event * event}');
calculationStream.forEach(print);
// Square: 0
// Square: 1
// Square: 4
// Square: 9
// Square: 16

Реализация

Stream<S> map<S>(S convert(T event)) {
  return new _MapStream<T, S>(this, convert);
}

© 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/map.html

Spec-Zone.ru

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