赞
踩
本节通过 RxJava 的集合操作引入 Kotlin 的集合操作符。
如果大家有用过 RxJava 一定对操作符的概念并不陌生,RxJava 允许我们对数据做一系列的链式调用,在每一步中改变数据的格式,最终得到我们想要的数据。Kotlin 中原生的为集合添加了海量的操作符,基本上 RxJava 有的操作符 Kotlin 都会有语言层面的支持。
先用 RxJava 实现一段链式调用,后面再使用 Kotlin 的集合操作符完成相同的操作,来对比下两种语法实现上的效果会有怎样的差别。
示例中,包含一个 String 类型和一个 Integer 类型的数据,目的是通过 Integer 数组中的 index 顺序拼接 String 数组的内容。先把整体的代码结构附上,之后拆解开分析:
首先通过 flatMap 做一次形变,flatMap 允许你传入一个集合类型的数据源,之后可以将这些集合类型的数据源拆散成一个一个的数据返回,比如示例中返回的是一个 Integer 值,之后后续操作将对它做单个调用。
接下来,只有当这个 Integer 值小于数组 a 的长度时该值才会返回否则就会被过滤掉。示例中数组长度为 8,也就是 >= 8 的值都会被过滤。
map 能够将传入的类型转换为另外一种类型输出。示例中,将传入的 integer 转换 a 中对应的 String 类型。也就是去取 a 中对应位置的字符串。
reduce 表示一次合并操作,实际上就是两个元素合并成一个元素返回,它的前两个泛型参数即为输入的待合并的两个参数类型,第三个泛型参数表示输出类型。示例中就是将两个 String 拼接输出。
最后订阅输出并拼接结果:
来看下运行结果:
以上就是本节内容,欢迎大家关注~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。