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

标签 kotlin kotlinx.coroutines

我不明白如何在需要 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)

关于Kotlin:如何将序列(协程)作为 Iterable<T> 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939859/

相关文章:

java - 如何从 Java 7 调用 Kotlin 挂起协程函数

kotlin - 如何在Kotlin中跳过定义的getter或setter

android - 辅助 .realm 文件 getInstance 花费的时间太长

java - 如何在 OkHttp 拦截器中获取方法的返回类型?

android - NetworkOnMainThreadException 是否对协程中的网络调用有效?

android - Kotlin 协程 - 启用 ProGuard 的 ClassNotFoundException

kotlin - 延迟 Kotlin 的 buildSequence 的推荐方法是什么?

kotlin - 如何在 Kotlin Spek 测试中组织多个协程和期望 block ?

android - 错误 : Contains illegal final field -Kotlin

java - 错误 : Could not find org. jetbrains.kotlin:kotlin-stdlib-jdk8