问题描述
Observable 发出贸易对象。 如何将每次发射操作成一个结果对象?
贸易(贸易类型:字符串,利润:BigDecimal) 结果(总利润:BigDecimal)
示例:
Trades
.scan(result: Result,currentTrade: Trade){
result.totalProfit += currentTrade.profit
}
.subscribe(
printLn(it.totalProfit)
)
解决方法
你有这样的想法吗?下次请提供完整示例。
import io.reactivex.rxjava3.core.Flowable
import org.junit.jupiter.api.Test
import java.math.BigDecimal
class SoScan {
private val seed : Result = Result(BigDecimal(0.0))
internal data class Result(val total : BigDecimal)
internal data class Trade(val profit : Double)
@Test
fun scan() {
Flowable.just(Trade(1.0),Trade(1.0))
.scan(seed) { prev,curr ->
Result(prev.total.plus(BigDecimal(curr.profit)))
}.test()
.assertValues(seed,Result(BigDecimal(1.0)),Result(BigDecimal(2.0)))
}
}