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

相关推荐
星释15 小时前
Rust 练习册 108:深入探索过程宏的奥秘
开发语言·后端·rust
CoderYanger15 小时前
动态规划算法-简单多状态dp问题:11.按摩师
开发语言·算法·leetcode·职场和发展·动态规划·1024程序员节
Aurorar0rua15 小时前
C Primer Plus Notes 12
c语言·开发语言
CoderYanger15 小时前
动态规划算法-路径问题:10.地下城游戏
开发语言·算法·leetcode·游戏·职场和发展·动态规划·1024程序员节
liu****15 小时前
11.字符函数和字符串函数(二)
c语言·开发语言·数据结构·c++·算法
@小白鸽15 小时前
1.2.1创建型设计模式
开发语言·设计模式
沐知全栈开发15 小时前
R 绘图 - 函数曲线图
开发语言
qq_5486749315 小时前
Go的env和bashrc的GOROOT配置不同
linux·开发语言·golang
freexyn15 小时前
Matlab自学笔记六十九:多项式求值、求根、积分和求导
开发语言·笔记·matlab