abstract class SequenceBuilder<in T>
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
abstract suspend fun yield(value: T) Yields a value to the Iterator being built. | |
abstract suspend fun yieldAll(iterator: Iterator<T>) Yields all values from the 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. |
open operator fun equals(other: Any?): Boolean Indicates whether some other object is "equal to" this one. Implementations must fulfil the following requirements: | |
open fun hashCode(): Int Returns a hash code value for the object. The general contract of hashCode is: | |
open fun toString(): String Returns a string representation of the object. |
© 2010–2018 JetBrains s.r.o.
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines.experimental/-sequence-builder/index.html