iterator
fun <T> iterator(
block: suspend SequenceScope<T>.() -> Unit
): Iterator<T>
Builds an Iterator lazily yielding values one by one.
import kotlin.test.*
fun main(args: Array<String>) {
//sampleStart
val collection = listOf(1, 2, 3)
val wrappedCollection = object : AbstractCollection<Any>() {
override val size: Int = collection.size + 2
override fun iterator(): Iterator<Any> = iterator {
yield("first")
yieldAll(collection)
yield("last")
}
}
println(wrappedCollection) // [first, 1, 2, 3, last]
//sampleEnd
}
fun main(args: Array<String>) {
//sampleStart
val iterable = Iterable {
iterator {
yield(42)
yieldAll(1..5 step 2)
}
}
val result = iterable.mapIndexed { index, value -> "$index: $value" }
println(result) // [0: 42, 1: 1, 2: 3, 3: 5]
// can be iterated many times
repeat(2) {
val sum = iterable.sum()
println(sum) // 51
}
//sampleEnd
}