Arp*_*kla 2 kotlin kotlin-coroutines kotlin-flow
我有一个Flow<List<Int?>>,我想收集这个流,但直到我得到一个空的 Int。然后流程应该被取消。例如,
val flow = flowOf(
listOf(1, 2),
listOf(3, null),
listOf(4)
)
flow.collectUntilNull {
println(it)
}
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
[1, 2]
[3, null]
Run Code Online (Sandbox Code Playgroud)
我知道有一个函数Flow.takeWhile,但它不会发出谓词返回 false 的值。就我而言,我也想要那个。
[1, 2]
[3, null]
Run Code Online (Sandbox Code Playgroud)
由于collectWhile是内部的,我无法使用此代码。虽然我想我可以复制粘贴该collectWhile实现到我的代码中。但还有其他方法可以做到这一点吗?
transformWhile是一个更灵活/通用的takeWhile.
flow
.transformWhile {
emit(it)
myCondition(it)
}
.collect {
println(it)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6018 次 |
| 最近记录: |