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))
}
})
我应该用什么代替 ??
才能使它起作用?我尝试了 buildIterator
和 buildSequence
但它们都不起作用。
您可以使用 asIterable()
:
val seq = buildSequence {
for (i in 1..5) {
yield(i)
}
}.asIterable()
iterate(seq)
我不明白如何在需要 Iterable 的地方传递协程。
假设我有以下功能:
fun <T> iterate(iterable: Iterable<T>) {
for (obj in iterable) {
// do something..
}
}
我想传递一个协程:
iterate( ?? {
for (obj in objects) {
yield(transform(obj))
}
})
我应该用什么代替 ??
才能使它起作用?我尝试了 buildIterator
和 buildSequence
但它们都不起作用。
您可以使用 asIterable()
:
val seq = buildSequence {
for (i in 1..5) {
yield(i)
}
}.asIterable()
iterate(seq)