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

相关推荐
喵了几个咪5 分钟前
C++ IDE:最适合 C++ 初学者的 IDE 是什么?
开发语言·c++·ide
梅梅绵绵冰13 分钟前
springmvc文件上传
java·开发语言
Hat_man_16 分钟前
虚拟机Ubuntu22.04交叉编译Qt5.15.2(ARM64)
开发语言·qt
Boop_wu17 分钟前
[Java 面试] 多线程1
java·开发语言
专注于大数据技术栈18 分钟前
java学习--main方法
java·开发语言·学习
2501_9418024828 分钟前
C++高性能并发编程实战:从多线程管理到内存优化与任务调度全流程解析
java·开发语言·c++
Creeper.exe1 小时前
【C语言】函数
c语言·开发语言
wjs20241 小时前
C++ 数据结构
开发语言
yangmf20401 小时前
APM(三):监控 Python 服务链
大数据·运维·开发语言·python·elk·elasticsearch·搜索引擎
Q***f6352 小时前
Java数据可视化应用
java·开发语言·信息可视化