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

相关推荐
plainGeekDev17 小时前
MVC 写法 → MVVM
android·java·kotlin
plainGeekDev2 天前
单例模式 → object 声明
android·java·kotlin
rocpp3 天前
Android 多语言切换实战:从 Context 到 Android 13 应用语言适配
android·kotlin
黄林晴3 天前
用了这么久 Koin Scope,原来一直都用错了?
android·kotlin
唐青枫4 天前
Kotlin Context Parameters 详解:别再把 Logger、事务和配置层层往下传
kotlin
Coffeeee4 天前
如何使用Glide和Coil加载WebP动图
android·kotlin·glide
Kapaseker4 天前
5 分钟搞懂 Kotlin DSL
android·kotlin
alexhilton5 天前
使用Android Archive进行打包
android·kotlin·android jetpack
逐光老顽童7 天前
Java 与 Kotlin 混合开发避坑指南:30 个真实案例实录
android·kotlin
plainGeekDev8 天前
null 判断 → Kotlin 可空类型
android·java·kotlin