gpt4 book ai didi

java - Observable 转换为 kotlin - 问题

转载 作者:行者123 更新时间:2023-12-02 12:51:54 29 4
gpt4 key购买 nike

我已经转换了一些 JAVA分类到 Kotlin但我得到 Type Mismatch Error Android Studio 中的问题。

我正在添加我的代码 fragment 以及 IDE 中的消息屏幕截图以供引用。

JAVA代码

Disposable disposable = Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap((Function<Object, ObservableSource<?>>) o ->
Observable.zip(mModel.getSubLocalitiesFromStores(storeType, storeVerified),
mModel.getLocalitiesFromSubLocalities(),
(subLocalities, localities) -> {
mLocalities = localities;
mSubLocalities = subLocalities;
return true;
}
))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(res -> {
setUpLocalitySpinner(spinnerLocalities);
setUpSubLocalitySpinner(spinnerSubLocalities);
});
compositeDisposable.add(disposable);

Kotlin 代码
Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap({ o->
Observable.zip<ArrayList<SubLocality>, ArrayList<Locality>, Boolean>(mModel!!.getSubLocalitiesFromStores(storeType, storeVerified),
mModel!!.localitiesFromSubLocalities,
{ subLocalities, localities ->
mLocalities = localities
mSubLocalities = subLocalities
true
}
)
} as Function<Any, ObservableSource<*>>)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { res ->
setUpLocalitySpinner(spinnerLocalities)
setUpSubLocalitySpinner(spinnerSubLocalities)
}

问题(IDE 警告)

enter image description here

最佳答案

你只有一个可以是任何东西的 lambda 函数。有时,类型推断不能 100% 起作用,所以你必须帮助它一点

我现在没有 IDE,但我想说添加类型就足够了。就像是:

Observable.zip<...>(...,
BiFunction { subLocalities, localities ->
mLocalities = localities
mSubLocalities = subLocalities
true
}
)

顺便说一句,请注意 RxJava 的一个很酷的东西是函数式方法。如果您不想(即您调用 subscribe() )并且所有效果都限制在 Observable 流中,则不会发生任何事情。这些作业
        mLocalities = localities
mSubLocalities = subLocalities

正在引入副作用,将来可能难以跟踪错误

关于java - Observable 转换为 kotlin - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999595/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com