SequenceScope所在位置是kotlin.sequences.SequenceScope,其相关用法介绍如下。

用法:

abstract class SequenceScope<in T>

SequenceIterator 的产生值的范围提供了 yieldyieldAll 暂停函数。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//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 })
}

println(sequence.take(7).toList()) // [0, 1, 3, 5, 8, 24, 72]
//sampleEnd
}

输出:

[0, 1, 3, 5, 8, 24, 72]

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//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)
    }
}

println(fibonacci().take(10).toList()) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
//sampleEnd
}

输出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

也可以看看

序列

迭代器