시퀀스의 특징

코틀린의 시퀀스는 ListSet 같은 컬렉션이랑 비슷함 개념이지만, 필요할 때마다 값을 하나씩 계산하는 지연(lazy)처리를 함. 시퀀스의 특징은 다음과 같음.

이러한 특징 때문에 값을 순차적으로 계산하여 필요할 때 반환하는 빌더를 정의하는 것이 좋음.

시퀀스 빌더

public fun <T> sequence(@BuilderInference block: suspend SequenceScope<T>.() -> Unit): Sequence<T> = Sequence { iterator(block) }
fun main() {
    val sequence = sequence {
        println("Generating first")
        yield(1)
        println("Generating second")
        yield(2)
        println("Generating third")
        yield(3)
        println("Done")
    }

    for (num in sequence) {
        println("The next number is $num")
    }
}