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

相关推荐
pen-ai8 小时前
打通 Python 与 C++ 的参数传递机制
开发语言·c++·python
亲爱的非洲野猪8 小时前
深入解析享元模式:用Java实现高性能对象复用
java·开发语言·享元模式
qq_401700418 小时前
Qt的.pro文件
开发语言·qt
FAFU_kyp8 小时前
Rust 的 引用与借用
开发语言·算法·rust
喵星人工作室8 小时前
C++传说:神明之剑0.4.5装备机制彻底完成
开发语言·c++·游戏
秦jh_8 小时前
【Qt】系统相关(下)
开发语言·qt
东木月8 小时前
使用python获取Windows产品标签
开发语言·windows·python
pumpkin845148 小时前
Go 基础语法全景
开发语言·后端·golang
hqwest8 小时前
码上通QT实战18--监控页面10-获取设备数据
开发语言·qt·湿度·modbus功能码·寄存器地址·从站数据·0103
星火开发设计8 小时前
C++ multiset 全面解析与实战指南
开发语言·数据结构·c++·学习·set·知识