НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
129 of 1310 menu

Функция generateSequence

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

Импорт

import kotlin.sequences.generateSequence

Синтаксис

fun <T : Any> generateSequence( seed: T?, nextFunction: (T) -> T? ): Sequence<T>
fun <T : Any> generateSequence( nextFunction: () -> T? ): Sequence<T>
fun <T : Any> generateSequence( seedFunction: () -> T? ): Sequence<T>

Пример

Создадим последовательность чисел от 1 до 5:

val sequence = generateSequence(1) { it + 1 } .takeWhile { it <= 5 } val res = sequence.toList() println(res)

Результат выполнения кода:

List<Int> [1, 2, 3, 4, 5]

Пример

Создадим последовательность четных чисел:

val sequence = generateSequence(0) { it + 2 } .take(5) val res = sequence.toList() println(res)

Результат выполнения кода:

List<Int> [0, 2, 4, 6, 8]

Пример

Создадим последовательность с помощью функции-генератора:

var count = 0 val sequence = generateSequence { count++ if (count <= 3) "Item $count" else null } val res = sequence.toList() println(res)

Результат выполнения кода:

List<String> ['Item 1', 'Item 2', 'Item 3']

Пример

Создадим последовательность символов:

val sequence = generateSequence('a') { if (it < 'e') (it + 1).toChar() else null } val res = sequence.toList() println(res)

Результат выполнения кода:

List<Char> ['a', 'b', 'c', 'd', 'e']

Пример

Бесконечная последовательность с ограничением:

val infiniteSequence = generateSequence(1) { it * 2 } val limited = infiniteSequence.take(6) val res = limited.toList() println(res)

Результат выполнения кода:

List<Int> [1, 2, 4, 8, 16, 32]

Смотрите также

  • функцию sequenceOf,
    которая создает последовательность из фиксированного набора элементов
  • функцию emptySequence,
    которая создает пустую последовательность
  • функцию listOf,
    которая создает неизменяемый список элементов
  • функцию arrayOf,
    которая создает массив элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить