我需要处理流收集中的当前值和先前值,因此我需要一些如下操作符:
----A----------B-------C-----|--->
---(null+A)---(A+B)---(B+C)--|--->
一个想法是这样的:
fun <T: Any> Flow<T>.withPrevious(): Flow<Pair<T?, T>> = flow {
var prev: T? = null
this@withPrevious.collect {
emit(prev to it)
prev = it
}
}
但是这样就无法控制第一个流将在其中执行的上下文。有更灵活的解决方案吗?
1条答案
按热度按时间b91juud31#
Flow
是连续的,因此您可以使用变量来存储前一个值: