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

相关推荐
代码or搬砖13 小时前
Java Lambda 表达式全面详解
java·开发语言·python
这周也會开心13 小时前
JDK1.8新增语法
java·开发语言
心随雨下13 小时前
TypeScript泛型开发常见错误解析
java·开发语言·typescript
郝学胜-神的一滴13 小时前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发
谁刺我心14 小时前
C++三种智能指针unique、shared、weak
开发语言·c++
年小个大14 小时前
优化App启动时间?startup-coroutine是什么?
性能优化·架构·kotlin
AGANCUDA14 小时前
qt使用osg显示pcd点云的例子
开发语言·qt
2301_8156864514 小时前
extern
java·开发语言
q***563814 小时前
Java进阶-SPI机制
java·开发语言
合作小小程序员小小店14 小时前
桌面开发,在线%物品代送,代接管理%系统,基于vs2022,c#,winform,sql server数据。
开发语言·数据库·sql·microsoft·c#