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

时间:2017-12-22 10:23:41

标签: kotlin kotlinx.coroutines

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

假设我有以下功能:

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

我想传递一个协程:

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

为了实现这一目标,我应该为了??而不是buildIterator而放置什么?我尝试了buildSequencematerial design calendar,但他们都没有工作。

1 个答案:

答案 0 :(得分:6)

您可以使用asIterable()

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

iterate(seq)