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

Бесконечная последовательность в Kotlin

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

Счетчик в локальной переменной растет на каждом вызове. Конечное действие без take здесь опасно - обход не завершился бы:

fun main() { var n = 0 val endless = generateSequence { n++ } val head = endless.take(6).toList() println(head) }

Функция take отрезает конечный кусок, и только после этого toList материализует шесть значений. Исходная последовательность при этом остается бесконечной в описании.

Тот же прием с семенем и правилом плюс один: ряд не ограничен, но наружу уходит только часть:

fun main() { val stream = generateSequence(100) { it + 1 } val window = stream .filter { it % 10 == 0 } .take(3) .toList() println(window) }

С помощью generateSequence без семени выдайте нечетные числа начиная с 1 через локальный счетчик. Возьмите первые пять и выведите список.

Постройте бесконечный ряд степеней двойки от 1. Оставьте только значения не больше 64, возьмите не более четырех элементов и выведите их сумму.

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