Что выведет код Middle Dart: Future, Stream, изоляты обновлено

Dart: преобразования Stream

Вопрос

Что выведет программа? По строке на каждый вывод.

Future<void> main() async {
  final result = await Stream.fromIterable([1, 2, 3, 4, 5, 6])
      .where((x) => x.isEven)
      .map((x) => x * 10)
      .take(2)
      .toList();
  print(result);
  final sum = await Stream.fromIterable([1, 2, 3]).fold<int>(0, (a, b) => a + b);
  print(sum);
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: [20, 40], 6. Операторы Stream работают как у Iterable, но асинхронно: where оставляет чётные 2, 4, 6, map умножает, take(2) берёт первые два и отменяет подписку на источник. toList и fold возвращают Future, которые завершаются, когда поток закончился.

Что выведет

[20, 40]
6

Разбор

Операторы Stream работают как у Iterable, но асинхронно: where оставляет чётные 2, 4, 6, map умножает, take(2) берёт первые два и отменяет подписку на источник. toList и fold возвращают Future, которые завершаются, когда поток закончился.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.