Kotlin手写RxJava变换符

Kotlin手写RxJava变换符

本文链接,点击这里进入

1、核心点:中转站存储之前的数据

2、三行代码实现RxJava

使用create、map、observer

kotlin 复制代码
fun main() {
    // create构造出RxJavaCore存放,lambda执行完的结果
    create{
        "WCH"
    }.map{ // 扩展出map方法,接收原先RxJavaCore的value数据,lambda方法执行完后,构造出RxJavaCore继续保存结果
        this + ":Hello world!"
    }.observer{ // 进行消费
        println(this)
    }
}

自定义操作符

kotlin 复制代码
class RxJavaCore<T>(var value:T)
// action()执行完的结果,用RxJavaCore保存起来
inline fun<O> create(action:()->O) : RxJavaCore<O>{
    return RxJavaCore(action())
}
// map
inline fun<I, O> RxJavaCore<I>.map(action: I.() -> O) : RxJavaCore<O>{
    return RxJavaCore(action(value))
}
// 监听者
inline fun<I> RxJavaCore<I>.observer(action:I.() -> Unit){
    action(value)
}

简化版本(一)

kotlin 复制代码
class RxJavaCore<T>(var value:T)
inline fun<O> create(action:()->O):RxJavaCore<O> = RxJavaCore(action())
inline fun<I,O> RxJavaCore<I>.map(action: (I) -> O):RxJavaCore<O> = RxJavaCore(action(value))
inline fun<I> RxJavaCore<I>.observer(action:(I) -> Unit) = action(value)

简化版本(二)

1、将Helper转换为Any(泛型) ====> 扩展函数的传递过程

kotlin 复制代码
inline fun<R> create(action:()->R):R = action() // 保存到泛型中,R中
inline fun<I,R> I.map(action: (I) -> R):R= action(this) // 给I扩展,自动拿到上一步骤,泛型里面R的数据
inline fun<I> I.observer(action:(I) -> Unit) = action(this)
相关推荐
灯火不休ᝰ15 小时前
[kotlin] 从Java到Kotlin:掌握基础语法差异的跃迁指南
java·kotlin·安卓
モンキー・D・小菜鸡儿21 小时前
kotlin 推牌九(麻将)小游戏
kotlin·小游戏
JMchen1231 天前
跨平台相机方案深度对比:CameraX vs. Flutter Camera vs. React Native
java·经验分享·数码相机·flutter·react native·kotlin·dart
DokiDoki之父2 天前
边写软件边学kotlin(一):Kotlin语法初认识:
android·开发语言·kotlin
吴声子夜歌2 天前
RxJava——操作符详解(四)
android·echarts·rxjava
fundroid3 天前
Kotlin 泛型进阶:in、out 与 reified 实战
android·开发语言·kotlin
JMchen1233 天前
现代Android图像处理管道:从CameraX到OpenGL的60fps实时滤镜架构
android·图像处理·架构·kotlin·android studio·opengl·camerax
JMchen1235 天前
Android CameraX深度解析:从Camera1到CameraX的相机架构演进
android·java·数码相机·架构·kotlin·移动开发·android-studio
倔强的石头1065 天前
【Linux指南】进程控制系列(五)实战 —— 微型 Shell 命令行解释器实现
linux·运维·kotlin
Hz4535 天前
Android Jetpack核心组件协同实战:Navigation 3.X+Lifecycle+Flow+Hilt的架构革新
android·kotlin