SequenceScope.yieldAll所在位置是kotlin.sequences.SequenceScope.yieldAll,其相關用法介紹如下。

用法一

abstract suspend fun yieldAll(iterator: Iterator<T>)

產生從 iterator 到正在構建的 Iterator 的所有值並掛起,直到所有這些值都被迭代並請求下一個值。

給定迭代器返回的值序列可能是無限的。

例子:

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]

用法二

suspend fun yieldAll(elements: Iterable<T>)

為正在構建的Iterator 生成一組值並掛起,直到所有這些值都被迭代並請求下一個值。

例子:

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]

用法三

suspend fun yieldAll(sequence: Sequence<T>)

為正在構建的Iterator 產生潛在的無限序列值並暫停,直到所有這些值都被迭代並請求下一個值。

該序列可能是無限的。

例子:

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]