Что выведет код Middle Dart: типы и null-safety обновлено

Dart: ленивый map и порядок вывода

Вопрос

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

void main() {
  final it = [1, 2, 3].map((x) {
    print('map $x');
    return x * 10;
  });
  print('создан');
  print(it.first);
}

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

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

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

Коротко

Код выведет: создан, map 1, 10. map ленивый: при создании ничего не вызывается, поэтому сначала создан. first берёт только первый элемент, функция вызывается один раз для 1, и обход останавливается.

Что выведет

создан
map 1
10

Разбор

map ленивый: при создании ничего не вызывается, поэтому сначала создан. first берёт только первый элемент, функция вызывается один раз для 1, и обход останавливается. Вызовов для 2 и 3 нет.

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

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