一、描述
按顺序对Observable发射的每项数据应用一个函数并发射最终的值。
Reduce操作符对原始Observable发射数据的第一项应用一个函数,然后再将这个函数的返回值与第二项数据一起传递给函数,以此类推,持续这个过程知道原始Observable发射它的最后一项数据并终止,此时Reduce返回的Observable发射这个函数返回的最终值。
在其它场景中,这种操作有时被称为累积,聚集,压缩,折叠,注射等。
注意如果原始Observable没有发射任何数据,reduce抛出异常IllegalArgumentException。
reduce默认不在任何特定的调度器上执行。
二、示意图
三、示例代码
1 | Observable.just(1, 2, 3, 4) |
四、运行结果
1 | onNext: 10 |
五、更多
reduce操作符还有以下变体:
- reduce(R,Func2)
跟reduce相关的操作符还有:
- collect(Func0,Action2)
详情可查阅下面的参考资料。
六、参考资料
PS:欢迎关注 SherlockShi 个人博客