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

相关推荐
JienDa8 分钟前
JienDa聊PHP:算命平台实战中主流PHP框架的协同架构方略
开发语言·架构·php
爱写代码的小朋友27 分钟前
21天学通Python全栈开发实战指南
开发语言·python
苦荞米27 分钟前
异步方法-C#中坑最大最深的功能
开发语言·c#
软件测试曦曦31 分钟前
使用Python接口自动化测试post请求和get请求,获取请求返回值
开发语言·自动化测试·软件测试·python·功能测试·程序人生·职场和发展
p***s911 小时前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
7***53341 小时前
后端在消息队列中的选型
big data·sqoop·rxjava
卡比巴拉—林1 小时前
Python print()函数详讲
开发语言·python
奶思图米球1 小时前
Python多环境管理
开发语言·python
JienDa1 小时前
JienDa聊PHP:基于协同架构的PHP主流框架优势整合与劣势补救策略
开发语言·架构·php
i***39581 小时前
JAVA系统中Spring Boot 应用程序的配置文件:application.yml
java·开发语言·spring boot