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

Ami*_*iri 5 kotlin kotlinx.coroutines

我不明白如何通过需要Iterable的Coroutine.

假设我有以下功能:

fun <T> iterate(iterable: Iterable<T>) {
    for (obj in iterable) {
        // do something..
    }
}
Run Code Online (Sandbox Code Playgroud)

我想通过一个协程:

iterate( ?? {
    for (obj in objects) {
        yield(transform(obj))
    }
})
Run Code Online (Sandbox Code Playgroud)

我该怎么做而不是??为了这个工作呢?我尝试了buildIterator,buildSequence但他们都没有工作.

s1m*_*nw1 6

你可以使用asIterable():

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

iterate(seq)
Run Code Online (Sandbox Code Playgroud)