filter()
方法来过滤我们观测序列中不想要的值,在上一章中,我们在几个例子中使用了已安装的应用列表,但是我们只想展示以字母C
开头的已安装的应用该怎么办呢?在这个新的例子中,我们将使用同样的列表,但是我们会过滤它,通过把合适的谓词传给filter()
函数来得到我们想要的值。loadList()
函数可以改成这样:loadList()
函数中添加下面一行:Func1
对象给filter()
函数,即只有一个参数的函数。Func1
有一个AppInfo
对象来作为它的参数类型并且返回Boolean
对象。只要条件符合filter()
函数就会返回true
。此时,值会发射出去并且所有的观察者都会接收到。filter()
是很好用的。我们不需要知道可观测序列的源或者为什么发射这么多不同的数据。我们只是想要这些元素的子集来创建一个可以在应用中使用的新序列。这种思想促进了我们编码中的分离性与抽象性。filter()
函数最常用的用法之一时过滤null
对象:onNext()
函数调用中再去检测null
值,让我们把注意力集中在应用业务逻辑上。