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

相关推荐
Source.Liu16 分钟前
【用Rust写CAD】第二章 第四节 函数
开发语言·rust
monkey_meng16 分钟前
【Rust中的迭代器】
开发语言·后端·rust
余衫马19 分钟前
Rust-Trait 特征编程
开发语言·后端·rust
monkey_meng23 分钟前
【Rust中多线程同步机制】
开发语言·redis·后端·rust
Jacob程序员25 分钟前
java导出word文件(手绘)
java·开发语言·word
小白学大数据31 分钟前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
VBA633733 分钟前
VBA之Word应用第三章第三节:打开文档,并将文档分配给变量
开发语言
半盏茶香34 分钟前
【C语言】分支和循环详解(下)猜数字游戏
c语言·开发语言·c++·算法·游戏
落落鱼20131 小时前
tp接口 入口文件 500 错误原因
java·开发语言
镰刀出海1 小时前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试