SequenceBuilder

abstract class SequenceBuilder<in T> (source)

Platform and version requirements: Kotlin 1.1

Builder for a Sequence or an Iterator, provides yield and yieldAll suspension functions.

import kotlin.test.*
import kotlin.coroutines.experimental.buildIterator
import kotlin.coroutines.experimental.buildSequence

fun main(args: Array<String>) {
//sampleStart
val sequence = buildSequence {
    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.*
import kotlin.coroutines.experimental.buildIterator
import kotlin.coroutines.experimental.buildSequence

fun main(args: Array<String>) {
//sampleStart
fun fibonacci() = buildSequence {
    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

buildSequence

buildIterator

Functions

yield

abstract suspend fun yield(value: T)

Yields a value to the Iterator being built.

yieldAll

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

Yields all values from the iterator to the Iterator being built.

suspend fun yieldAll(elements: Iterable<T>)

Yields a collections of values to the Iterator being built.

suspend fun yieldAll(sequence: Sequence<T>)

Yields potentially infinite sequence of values to the Iterator being built.

Inherited Functions

equals

open operator fun equals(other: Any?): Boolean

Indicates whether some other object is "equal to" this one. Implementations must fulfil the following requirements:

hashCode

open fun hashCode(): Int

Returns a hash code value for the object. The general contract of hashCode is:

toString

open fun toString(): String

Returns a string representation of the object.