yield
Yields a value to the Iterator being built and suspends until the next value is requested.
Samples
import samples.*
import kotlin.test.*
fun main() {
//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 })
}
assertPrints(sequence.take(7).toList(), "[0, 1, 3, 5, 8, 24, 72]")
//sampleEnd
}
import samples.*
import kotlin.test.*
fun main() {
//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)
}
}
assertPrints(fibonacci().take(10).toList(), "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]")
//sampleEnd
}