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);
}
非常好用。
?
|