Sequences are stateless

At the beginning of this section, we mentioned that suspending sequences are stateless and that they reset after being used. Consider the following sequence:

val sequence = buildSequence {
for (i in 0..9) {
println("Yielding $i")
yield(i)
}
}

It's a simple sequence that can yield up to 10 values. Now, we might read the values like this:

fun main(args: Array<String>) {
println
("Requesting index 1")
sequence.elementAt(1)

println("Requesting index 2")
sequence.elementAt(2)

println("Taking 3")
sequence.take(3).joinToString()
}

You may notice that a sequence will simply execute from the beginning for each call, which is different from using an iterator:

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.149.250.11