РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
499 of 723 menu

Метод expand

Метод expand класса Stream принимает функцию-преобразователь, которая для каждого элемента исходного потока возвращает коллекцию (например, список или другую итерируемую последовательность). Все полученные коллекции объединяются в один общий поток, элементы которого идут по порядку. Первым параметром метод принимает функцию-преобразователь, в которую передаётся очередной элемент потока и возвращается новая последовательность.

Синтаксис

Stream<T> expand<T>(Iterable<T> Function(S) convert)

Пример

Давайте преобразуем каждый элемент потока в список из двух чисел:

void main() { Stream.fromIterable([1, 2, 3]).expand((int n) => [n, n * 10]).listen((int n) { print(n); }); }

Результат выполнения кода:

1 10 2 20 3 30

Пример

Давайте разобьём каждую строку потока на отдельные символы и соберём результат в общий список с помощью toList:

void main() { Stream.fromIterable(['abcde', '12345']).expand((String str) => str.split('')).toList().then((List<String> res) { print(res); }); }

Результат выполнения кода:

[a, b, c, d, e, 1, 2, 3, 4, 5]

Пример

Давайте превратим каждый элемент потока в пустой или непустой список, чтобы увидеть, как ведёт себя метод при отсутствии данных:

void main() { Stream.fromIterable([1, 2, 3]).expand((int n) => n.isEven ? [n] : []).toList().then((List<int> res) { print(res); }); }

Результат выполнения кода:

[2]

Смотрите также

  • метод map,
    который преобразует каждый элемент потока
  • метод asyncExpand,
    который асинхронно разворачивает элементы
  • метод where,
    который фильтрует элементы потока
  • метод toList,
    который собирает поток в список
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить