Tony Blundell
07/10/2020, 1:12 AMvar highest = 0
for (i in myIntegers) {
if (i > highest) {
highest = i
doSomethingElse()
}
}
scan
is what I was looking for 🙂
data class State(val max: Int)
val l = flowOf(1,3,2,5,4,3,6,2,3)
.scan(State(0)) { state, value ->
// Do something fun with max here
State(maxOf(state.max, value))
}
... or while preserving the original flow...
data class State(val max: Int, val value: Int)
val l = flowOf(1,3,2,5,4,3,6,2,3)
.scan(State(0, 0)) { state, value ->
// Do something fun with max here
State(maxOf(state.max, value), value)
}
.drop(1)
.map { it.value }
elizarov
07/10/2020, 11:11 AMflow {
var highest = 0
collect { i ->
if (i > highest) {
highest = i
doSomethingElse()
}
emit(i) // emit original i
}
}
Tony Blundell
07/10/2020, 12:35 PM