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

相关推荐
talenteddriver几秒前
java: 分页查询(自用笔记)
java·开发语言
繁华似锦respect2 分钟前
lambda表达式中的循环引用问题详解
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
我要升天!8 分钟前
QT -- 网络编程
c语言·开发语言·网络·c++·qt
Unlyrical14 分钟前
为什么moduo库要进行线程检查
linux·服务器·开发语言·c++·unix·muduo
GIS阵地15 分钟前
Qt实现简易仪表盘
开发语言·c++·qt·pyqt·qgis·qt5·地理信息系统
天天摸鱼的小学生20 分钟前
【Java Enum枚举】
java·开发语言
阿猿收手吧!23 分钟前
【C++】cpp虚函数和纯虚函数的声明和定义
开发语言·c++
q_302381955629 分钟前
Python实现基于多模态知识图谱的中医智能辅助诊疗系统:迈向智慧中医的新篇章
开发语言·python·知识图谱
梨落秋霜42 分钟前
Python入门篇【输入input】
开发语言·python
wen-pan43 分钟前
Go 语言 GMP 调度模型深度解析
开发语言·go