Rxjava的学习之变换操作符—scan
来源:互联网 发布:redhat linux iso下载 编辑:程序博客网 时间:2024/05/17 21:04
一、scan(Func2))
连续地对数据序列的每一项应用一个函数,然后连续发射结果
Scan操作符对原始Observable发射的第一项数据应用一个函数,然后将那个函数的结果作为自己的第一项数据发射。它将函数的结果同第二项数据一起填充给这个函数来产生它自己的第二项数据。它持续进行这个过程来产生剩余的数据序列。这个操作符在某些情况下被叫做accumulator。
Observable.just(1,2,3,4,5) .scan(new Func2<Integer, Integer, Integer>() { @Override public Integer call(Integer sum, Integer item) { return sum+item; } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer item) { Log.d("TAG","scan:"+item); } }); 使用lambda表达式简化: Observable.just(1,2,3,4,5) .scan((sum, item) -> sum+item) .subscribe(item -> Log.d("TAG","scan:"+item));
运行结果:
scan: 1
scan: 3
scan: 6
scan: 10
scan: 15
二、 scan(R,Func2))
R参数的意思是将其当做一个基值,让后续的值去累加计算。
有一个scan操作符的变体,你可以传递一个种子值给累加器函数的第一次调用(Observable发射的第一项数据)。如果你使用这个版本,scan将发射种子值作为自己的第一项数据。注意:传递null作为种子值与不传递是不同的,null种子值是合法的。
这个操作符默认不在任何特定的调度器上执行。
Observable.just(1,2,3,4,5) .scan(10,new Func2<Integer, Integer, Integer>() { @Override public Integer call(Integer sum, Integer item) { return sum+item; } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer item) { Log.d("TAG","scan:"+item); } }); 使用lambda表达式简化: Observable.just(1,2,3,4,5) .scan(10, (sum, item) -> sum+item) .subscribe(item -> Log.d("TAG","scan:"+item));
运行结果:
scan: 11
scan: 13
scan: 16
scan: 20
scan: 25
0 0
- Rxjava的学习之变换操作符—scan
- RxJava的学习之变换操作符—map
- RxJava的学习之变换操作符—flatMap
- RxJava的学习之变换操作符—buffer
- Rxjava(变换类)-scan
- RxJava 转换操作符scan
- RxJava操作符 reduce & scan
- RxJava的变换操作
- RxJava操作符总结之变换
- RxJava操作符总结之变换
- Rxjava的学习之过滤操作符—first
- rxjava 操作符 just,from,scan,map
- RxJava操作符(2)-变换
- RX操作符之对Observable发射的数据执行变换操作二(scan、groupby、buffer、window)
- RxJava 学习笔记(六) --- Transforming 变换操作符
- RxJava系列之二 变换类操作符详解1
- RxJava 系列之变换操作符map(2)
- RxJava 系列之变换操作符flatmap(2)
- android 应用组件[通用 Intent---打开特定类型的文件] 十二
- JS验证图片格式和大小并预览
- JavaWeb项目各种路径的获取
- yogabook安卓版root方法
- 屏幕高度工具类
- Rxjava的学习之变换操作符—scan
- iOS 修改xcode主题 (xcode hdoria)
- 3分钟实现iOS语言本地化/国际化(图文详解)
- (CF 788) B. Weird journey 欧拉通路 + dfs判断图的连通性
- C++ 中export 关键字的尴尬处境
- Several ports (8005, 8080, 8009) required by Tomcat v7.0
- dp2px
- Linux目录结构
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState