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

相关推荐
6666v62 分钟前
Android Kotlin(3) Flow异步流
android·kotlin
2501_916766545 分钟前
【Java】HashMap集合实现类
java·开发语言
海棠AI实验室8 分钟前
Python 学习路线图:从 0 到 1 的最短闭环
开发语言·python·学习
Macbethad11 分钟前
技术报告:加密算法实现与性能优化研究
开发语言
玄同76512 分钟前
Python 函数:LLM 通用逻辑的封装与复用
开发语言·人工智能·python·深度学习·语言模型·自然语言处理
lkbhua莱克瓦2417 分钟前
基础-事务
开发语言·数据库·笔记·mysql·事务
xxxmine20 分钟前
ConcurrentHashMap 和 Hashtable 的区别详解
java·开发语言
阿猿收手吧!26 分钟前
【C++】brpc与grpc对比
开发语言·c++
会员果汁40 分钟前
算法-拓扑排序-C
c语言·开发语言·算法
wangchen_01 小时前
深入理解 C/C++ 强制类型转换:从“暴力”到“优雅”
java·开发语言·jvm