compose RxJava笔记
Rx通过链接它们而不是嵌套它们,具有应用运算符的特定样式。此样式并不罕见,这对于不可变对象更有意义,甚至可以在标准Java特性中找到它,例如字符串:String s = new String(“Hi”).toLowerCase().replace('a','c');此样式允许您按照应用顺序查看修改,并且在使用大量运算符时它也看起来更整洁。
理想情况下,您希望您的Rx运算符与其他运算符一样适合链:
许多语言都有支持这种方法的方法。不方便的是,Java没有。您必须编辑Observable本身才能添加自己的方法。没有必要要求RxJava团队将您的想法添加到操作集中,因为已经有这么多,RxJava团队对于添加另一个操作符是保守的。你可以扩展Observable并在那里添加你自己的运算符。在这种情况下,您将无法再共享和组合运算符库。
有一种方法可以使用compose方法将自定义操作符拟合到链中。
啊哈!Transformer(变形金刚)接口!Transformer <T,R>实际上只是Func1 <Observable <T>,Observable <R >>接口的别名。这是一个采用Observable <T>并返回Observable <R>的方法,就像我们为计算运行平均值所做的那样。
Java不允许您仅通过名称引用函数,因此我们假设自定义运算符在我们的Main类中。我们可以看到,现在我们的操作完全适合链条,尽管首先调用compose的样板。为了更好的封装,您应该在一个新类中实现Observable.Transformer,并将整个实现与其辅助类一起移出视线。
我们就像这样使用它
大多数Rx运算符都是可参数化的。我们也可以这样做。让我们扩展运算符的功能,可以忽略超过某个阈值的值。
我们刚刚将参数作为字段添加到运算符中,为我们覆盖的用途添加了构造函数,并在我们的Rx操作中使用了该参数。现在我们可以做source.compose(new RunningAverage(5)),理想情况下,我们将调用source.runningAverage(5)。Rx是一个功能范例,但Java仍然主要是面向对象的语言,并且相当保守。
您可以在此处获取此示例运算符的完整示例(here)。
下节再续!
原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%203%20-%20Taming%20the%20sequence/7.%20Custom%20operators.md
有什么讨论的内容,可以加我公众号:
compose RxJava笔记相关推荐
- Compose 学习笔记(一)—— Compose 初探
历时两年,Android 团队推出了全新的原生 Android 界面 UI 库--Compose.当然,Compose 也是属于 Jetpack 工具库中的一部分,官方宣称可以简化并加快 Androi ...
- Compose学习笔记1-compose、state、flow、remember
新建一个 compose 项目 开始前,请下载最新版本的 Android Studio Arctic Fox,然后使用 Empty Compose Activity 模板创建应用. 我们先看看在 ap ...
- Jetpack Compose学习笔记
在前不久的 Android Dev Summit '19 上,Jetpack Compose 终于发布了一个可直接获得的预览版.现在的版本还是 0.1.0-dev02,处于非常早期的版本,官方也再三强 ...
- Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~
又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...
- RxJava响应式编程学习笔记
1.概述 RxJava是一个著名的开源库,是ReactiveX(Reactive Extensions)的一种java实现.ReactiveX是一种响应式扩展框架,有很多实现,如RxAndroid,R ...
- torchvision 笔记:transforms.Compose()
torchvision.transforms.Compose()类的主要作用是串联多个transforms列表里面的transform操作 比如,在torchvision 笔记:transforms. ...
- Java中expecial,RxJava 学习笔记 (一)
作者: 一字马胡 转载标志 [2017-12-13] 更新日志 日期 更新内容 备注 2017-12-13 RxJava学习笔记系列 系列笔记 (一) 2017-12-15 增加系列笔记(二) 201 ...
- RxJava 学习笔记(八) --- Combining 结合操作
@(Rxjava学习笔记) RxJava 学习笔记(八) - Combining 结合操作 RxJava 学习笔记八 Combining 结合操作 StartWith 在数据序列的开头插入一条指定的项 ...
- docker 及docker compose笔记
Docker hub: usr:yuyixiong pw: yuyixiong email: 900925.com hub 查看 :https://www.runoob.com/docker/dock ...
最新文章
- taro 打包微信小程序运行失败(一)
- python语言中文社区-python解决中文
- C++继承中父类和子类之间的同名覆盖
- 网络流 24 题汇总(LOJ 上只有 22 题???)
- Java实现文件上传-按钮弹出上传页面
- 文件处理之解决使用 feof(c语言)或(fin.eof())出现多读问题
- C语言 链表拼接 PTA,PTA实验 链表拼接 (20point(s))
- 关于如何在Python中使用静态、类或抽象方法的权威指南
- 【无删减】Python老司机收藏夹的17个国外免费学习网站
- python vbs库_Python语言之requests库
- 修改map.html,HTML map 标签 | 菜鸟教程
- usb设备由生产到使用 java 114979888
- 数据清洗Chap4——dataframe操作
- Vs2010 破解 序列号
- 章节1 计算机体系结构
- Java将域名转换成IP
- 算法 树7 二叉搜索树的操作集
- 中南大学青年志愿者协会电脑维修部
- 校验码 - 奇偶校验
- 为什么手机网速太慢_为什么手机网速很慢;为什么手机信号满格,网速却很慢?...
热门文章
- [转载] python 列表List中index函数的坑
- [转载] pip快速下载python包
- [转载] 康威的人生游戏与轻量级模式
- [转载] Python全栈(1)—— Python如何快速下载库与jupyter notebook 的基本使用
- 第二周四则运算汇报及总结
- scala编程第16章学习笔记(3)——List类的高阶方法
- PS中的Workflow的创建
- UVa 10066 - The Twin Towers(LCS水题)
- sql2005安装过程,(不装C盘)
- AngularJS Slider指令(directive)扩展