Rx java 通过适当的处理扩展Kotlin中的RxJava可观测性
我正在尝试为RxJava创建一个新的操作符,它的工作方式类似于Rx java 通过适当的处理扩展Kotlin中的RxJava可观测性,rx-java,kotlin,Rx Java,Kotlin,我正在尝试为RxJava创建一个新的操作符,它的工作方式类似于scan,但可以采用两种不同的类型。这类似于fold或reduce的传统实现,其中如果给定默认值,折叠函数的参数可以是不同的类型,只要返回类型与累加器匹配 这是我到目前为止得到的 fun <T, R> Observable<T>.fold(acc: R, f: (R, T) -> R): Observable<R> = Observable.create { o -> var a
scan
,但可以采用两种不同的类型。这类似于fold
或reduce
的传统实现,其中如果给定默认值,折叠函数的参数可以是不同的类型,只要返回类型与累加器匹配
这是我到目前为止得到的
fun <T, R> Observable<T>.fold(acc: R, f: (R, T) -> R): Observable<R> = Observable.create { o ->
var accm = acc
subscribe({
accm = f(accm, it)
o.onNext(accm)
}, {
o.onError(it)
}, {
o.onComplete()
})
}
fun Observable.fold(acc:R,f:(R,T)->R:Observable=Observable.create{o->
var accm=acc
订阅({
accm=f(accm,it)
o、 onNext(accm)
}, {
o、 onError(it)
}, {
o、 onComplete()
})
}
我只是在一个可观察的
中订阅这个
。创建
块,并用通过累加器函数输入的新值更新观察者。问题是当处置此
时,订阅将不会被清除。我该怎么办?请看扫描(R,双功能)
:嗯,我想我试过这个,但没用。也许我的编译器只是在抱怨别的事情。无论如何,我试图实现的特定功能并不是问题的焦点,它只是一个例子。我仍然想知道我如何做一个类似的扩展,只是为了更好地理解可观察物是如何工作的。谢谢你!有一个关于编写操作符的例子。太棒了,谢谢@你好!。考虑为你的博客写新文章?