Kotlin模仿Rxjava进行数据的流式转换实现

需求:

从数据源接收数据,然后通过转换操作转换为用户需要的数据类型进行消费使用。

1、定义数据类,用于存储临时数据

data class TempData<T> (var info: T)

2、定义数据接收处理接口,并保存在数据类中

fun <R> receiver(action:()->R):TempData<R> {

return TempData(action())

}

3、对数据类进行接口扩展,自定义扩展接口map,目的是进行数据转换,并保存在数据类中

fun <T, R> TempData<T>.map(action:T.()->R):TempData<R> {

return TempData(action(info))

}

4、对数据类进一步扩展,自定义扩展接口comsume,对数据进行处理操作

fun <T> TempData<T>.consume(action:T.()->Unit):Unit{

return action(info)

}

简单举例:

fun main() {

receiver{

"Kotline study!"

}.map{

println("current info is ${this}")

"[Current info is${this}]"

}.map{

length

}.consume{

println("current info length is $this")

}

}

执行之后打印结果为:

current info is Kotline study!

current info length is 32

相关推荐
界面开发小八哥6 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
qystca35 分钟前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱35 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子40 分钟前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab
努力进修44 分钟前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
Ajiang28247353043 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
幽兰的天空3 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10226 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
----云烟----8 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024068 小时前
SQL SELECT 语句:基础与进阶应用
开发语言