K.O*_*.Os 4 type-inference kotlin rx-java rx-java2
我正在尝试在发生计时器的情况下在Observable上实现retryWhen,但是在IDE Android Studio 3.0中有下划线的奇怪错误
这是代码:
rxRssiRepository.onRssiUpdate() //returns Observable<RssiEvent>
.timeout(10, TimeUnit.MILLISECONDS)
.retryWhen { t: Observable<Throwable> ->
t.flatMap { error: Throwable ->
if (error is TimeoutException) {
stopLocationUpdates()
Log.v("TIMEOUT", "TIMEOUT RSSI EVENTS")
Observable.just(Observable.empty())
} else {
Observable.error(error)
}
}
}
.concatMap { t: RssiEvent ->
appendRssiEvent(t)
}
.publish()
Run Code Online (Sandbox Code Playgroud)
IDE在.flatMap运算符上用红色下划线表示:
类型推断失败:没有足够的信息来推断参数R in
有趣的flatMap(mapper:(((t:Throwable)?ObservableSource)!):可观察!请明确指定。
与“ if”运算符相同:
控制流表达式的类型推断失败。请明确指定其类型
对于操作员.just:
类型推断失败:没有足够的信息来有趣地推断参数T(项目:T!):可观察!请明确指定。
对于运算符.empty:
类型推断失败:没有足够的信息来推断参数T
有趣(项目:T!):可观察!请明确指定。
对于.error运算符:
类型推断失败:没有足够的信息来推断参数T
有趣的错误(异常:Throwable!):可观察!请明确指定。
如何解决这个问题?
我的意思是,这段代码也位于Java中: 如何添加超时以检测Observable一段时间未发出
但是当我将其转换为Kotlin时,它给了我所描述的情况问题
小智 7
编译器无法确定您要返回的类型。
在这种情况下,最简单的解决方法是在返回类型中添加一个类型。像这样的东西Observable.just(Observable.empty<Any>())。现在,编译器将能够找出要返回的类型。
| 归档时间: |
|
| 查看次数: |
3929 次 |
| 最近记录: |