Kotlin 设计一款RxJava API

fun main() {
    create {
        "Derry"
        123
        true
        "AAAAA"
    }.map {
        println(it)
        it.replace("A","B")
    }.map {
        println(it)
        it.replace("B","C")
    }

}


//最初版本
//inline fun <OUTPUT> create(action: () -> OUTPUT): RxJavaCoreClassObject<OUTPUT> {
//    return RxJavaCoreClassObject<OUTPUT>((action()));
//}
//简化
inline fun <OUTPUT> create(action: () -> OUTPUT) = RxJavaCoreClassObject<OUTPUT>((action()));

//中转站。保存我们得记录
//主构造 接受传递进来得信息。此信息就是 create最后一行的返回
class RxJavaCoreClassObject<T>(var valueItem: T) {
    //valueItem == crate操作符 最后一行的返回值 流向到此处

    //分装更多的操作符

}

inline fun <I, O> RxJavaCoreClassObject<I>.map(mapAction: (I) -> O): RxJavaCoreClassObject<O> {
    return RxJavaCoreClassObject(mapAction(valueItem))
}

一般map里面我们用来操作。

observer模式里面用数据来输出
fun main() {
    create {
        "Derry"
        123
        true
        "AAAAA"
    }.map {
        it.replace("A", "B")
    }.map {
        it.replace("B", "C")
    }.observer {
        //只需要把上面输入的内容,打印输出即可。所以不需要管输出
        println(it)
    }

}


//最初版本
//inline fun <OUTPUT> create(action: () -> OUTPUT): RxJavaCoreClassObject<OUTPUT> {
//    return RxJavaCoreClassObject<OUTPUT>((action()));
//}
//简化
inline fun <OUTPUT> create(action: () -> OUTPUT) = RxJavaCoreClassObject<OUTPUT>((action()));

//中转站。保存我们得记录
//主构造 接受传递进来得信息。此信息就是 create最后一行的返回
class RxJavaCoreClassObject<T>(var valueItem: T) {
    //valueItem == crate操作符 最后一行的返回值 流向到此处

    //分装更多的操作符

}

inline fun <I, O> RxJavaCoreClassObject<I>.map(mapAction: (I) -> O): RxJavaCoreClassObject<O> {
    return RxJavaCoreClassObject(mapAction(valueItem))
}

inline fun <I> RxJavaCoreClassObject<I>.observer(observerAction: (I) -> Unit): Unit {
    observerAction(valueItem);
}

非常好用。

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/124201853