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)
相关推荐
用户091 小时前
Kotlin Flow的6个必知高阶技巧
android·面试·kotlin
用户091 小时前
Jetpack Compose静态与动态CompositionLocal深度解析
android·面试·kotlin
Jeled12 小时前
「高级 Android 架构师成长路线」的第 1 阶段 —— 强化体系与架构思维(Clean Architecture 实战)
android·kotlin·android studio·1024程序员节
明道源码14 小时前
Kotlin 控制流、函数、Lambda、高阶函数
android·开发语言·kotlin
橙子1991101614 小时前
在 Kotlin 中,ViewModel 的获取
开发语言·vue.js·kotlin
hweiyu0014 小时前
Gradle 构建脚本迁移:从 Groovy DSL 到 Kotlin DSL,语法与技巧对比
开发语言·kotlin·gradle
消失的旧时光-194314 小时前
搞懂 Kotlin 的 List、Set、Map、HashMap、LinkedHashMap,以及 asSequence() 的底层原理与实战场景。
kotlin·数据处理·1024程序员节
明道源码14 小时前
Kotlin 面向对象编程、主构造函数、次构造函数、伴生对象、数据类、继承
kotlin·1024程序员节
消失的旧时光-194316 小时前
Kotlin × Gson:为什么遍历 JsonObject 要用 entrySet()
android·kotlin·数据处理·1024程序员节
AH_HH1 天前
SmartCabinet:基于 Android 的智能储物柜管理系统技术解析
android·kotlin·存储柜