Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rx java 显式类型参数Kotlin和RxJava_Rx Java_Kotlin - Fatal编程技术网

Rx java 显式类型参数Kotlin和RxJava

Rx java 显式类型参数Kotlin和RxJava,rx-java,kotlin,Rx Java,Kotlin,这是在Kotlin中使用RxJava的compose和ThreadTransformer的唯一可能的方法吗?我只是不喜欢函数中的部分。可以省略吗 override fun call(): Observable<MyType> { return Observable.just(getData()) .compose(threadTransformer.applySchedulers<MyType>()) } override fun cal

这是在Kotlin中使用RxJava的
compose
ThreadTransformer
的唯一可能的方法吗?我只是不喜欢
函数中的
部分。可以省略吗

  override fun call(): Observable<MyType> {
    return Observable.just(getData())
        .compose(threadTransformer.applySchedulers<MyType>())
  }
override fun call():可观察{
返回Observable.just(getData())
.compose(threadTransformer.applySchedulers())
}

可观察。compose
是解决Java中缺少扩展函数的一种方法。无需在Kotlin中使用
Observable.compose
,因为它支持开箱即用的扩展功能:

// default schedulers
fun <T> Observable<T>.applySchedulers(): Observable<T> {
  return subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
}

// custom transformer
fun <T> Observable<T>.applySchedulers(transformer: ThreadTransformer): Observable<T> {
  return compose(transformer.applySchedulers<T>())
}

override fun call(): Observable<MyType> {
  return Observable.just(getData()).applySchedulers()
}
//默认调度程序
有趣的可观察。applySchedulers():可观察{
返回subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
}
//自定义变压器
有趣的可观察。ApplyScheduler(transformer:ThreadTransformer):可观察{
返回组合(transformer.applySchedulers())
}
override fun call():可观察{
返回Observable.just(getData()).applySchedulers()
}

基于弗拉基米尔·米罗诺夫的回答。将此扩展到您的需要:

//Observable
fun <T> Observable<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Observable<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Observable<T>.applyScheduler(scheduler: Scheduler) =
                subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())

//Single
fun <T> Single<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Single<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Single<T>.applyScheduler(scheduler: Scheduler) =
            subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())

//Completable
//..
//可观察
有趣的可观察到的.applyIoScheduler()=applyScheduler(Schedulers.io())
有趣的可观察。applyComputationScheduler()=applyScheduler(Schedulers.computation())
可观察到的私有乐趣。applyScheduler(调度器:调度器)=
subscribeOn(调度器).observeOn(AndroidSchedulers.mainThread())
//单身
fun Single.applyIoScheduler()=applyScheduler(Schedulers.io())
fun Single.applycomputionscheduler()=applyScheduler(Schedulers.computation())
private fun Single.applyScheduler(调度程序:调度程序)=
subscribeOn(调度器).observeOn(AndroidSchedulers.mainThread())
//完全的
//..