W3cubDocs

/Kotlin

SequenceScope

Platform and version requirements: JVM (1.3), JS (1.3), Native (1.3)
abstract class SequenceScope<in T>

The scope for yielding values of a Sequence or an Iterator, provides yield and yieldAll suspension functions.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val sequence = sequence {
    val start = 0
    // yielding a single value
    yield(start)
    // yielding an iterable
    yieldAll(1..5 step 2)
    // yielding an infinite sequence
    yieldAll(generateSequence(8) { it * 3 })
}

println(sequence.take(7).toList()) // [0, 1, 3, 5, 8, 24, 72]
//sampleEnd
}
import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
fun fibonacci() = sequence {
    var terms = Pair(0, 1)

    // this sequence is infinite
    while (true) {
        yield(terms.first)
        terms = Pair(terms.second, terms.first + terms.second)
    }
}

println(fibonacci().take(10).toList()) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
//sampleEnd
}

See Also

sequence

iterator

Functions

Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

yield

Yields a value to the Iterator being built and suspends until the next value is requested.

abstract suspend fun yield(value: T)
Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

yieldAll

Yields all values from the iterator to the Iterator being built and suspends until all these values are iterated and the next one is requested.

abstract suspend fun yieldAll(iterator: Iterator<T>)

Yields a collections of values to the Iterator being built and suspends until all these values are iterated and the next one is requested.

suspend fun yieldAll(elements: Iterable<T>)

Yields potentially infinite sequence of values to the Iterator being built and suspends until all these values are iterated and the next one is requested.

suspend fun yieldAll(sequence: Sequence<T>)

© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.sequences/-sequence-scope/index.html