Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpLzOr 81 of 224 menu
◀ ▶

Порядок шагов в Dart

Шаги на Iterable выполняются в том порядке, в котором они записаны. Один и тот же набор команд дает разный объем работы, если переставить where и map местами.

Сначала оставим числа не меньше четырех, потом удвоим каждое:

final nums = [2, 3, 4, 5]; final viaFilter = nums .where((n) => n >= 4) .map((n) => n * 2) .toList(); print(viaFilter);

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

final nums = [2, 3, 4, 5]; final viaMap = nums .map((n) => n * 2) .where((n) => n > 6) .toList(); print(viaMap);

Список [8, 10] совпадает с первым вариантом, но map во втором случае выполнился четыре раза. На длинной цепочке такая перестановка заметно меняет объем работы.

Дан список [1, 2, 3, 4, 5]. Сначала оставьте числа больше двух, затем прибавьте единицу и соберите список. Выведите его и запомните длину цепочки отбора.

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить