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

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

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

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

fun main() { val nums = listOf(2, 3, 4, 5) val viaFilter = nums.asSequence() .filter { it >= 4 } .map { it * 2 } .toList() println(viaFilter) }

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

fun main() { val nums = listOf(2, 3, 4, 5) val viaMap = nums.asSequence() .map { it * 2 } .filter { it > 6 } .toList() println(viaMap) }

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

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

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

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