Kotlin:如何将序列(协程)作为 Iterable<T> 传递

Kotlin: how to pass a sequence (coroutine) as Iterable<T>

我不明白如何在需要 Iterable 的地方传递协程。

假设我有以下功能:

fun <T> iterate(iterable: Iterable<T>) {
    for (obj in iterable) {
        // do something..
    }
}

我想传递一个协程:

iterate( ?? {
    for (obj in objects) {
        yield(transform(obj))
    }
})

我应该用什么代替 ?? 才能使它起作用?我尝试了 buildIteratorbuildSequence 但它们都不起作用。

您可以使用 asIterable():

val seq = buildSequence {
    for (i in 1..5) {
        yield(i)
    }
}.asIterable()

iterate(seq)