【发布时间】:2018-05-03 14:21:44
【问题描述】:
当发生超时时,我正在尝试在我的 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()
IDE 在红色下划线 .flatMap 运算符并表示:
类型推断失败:没有足够的信息来推断参数 R
有趣的平面地图 ( 映射器:((t:Throwable)→ObservableSource)! ) : 看得见! 请明确说明。
'if' 运算符也是如此:
控制流表达式的类型推断失败。请明确指定其类型
对于运营商.just:
类型推断失败:没有足够的信息来推断参数 T 好玩而已 ( 项目:T! ) : 看得见! 请明确说明。
对于运算符 .empty:
类型推断失败:没有足够的信息推断出参数 T
只是好玩 ( 项目:T! ) : 看得见! 请明确说明。
对于 .error 运算符:
类型推断失败:没有足够的信息推断出参数 T
有趣的错误 ( 例外:可投掷! ) : 看得见! 请明确说明。
如何解决这个问题?
我的意思是,这段代码也在 Java 中: How to add a timeout to detect that an Observable didn't emit for a while
但是当我将它类似地转换为 Kotlin 时,它给了我所描述的情况问题
【问题讨论】:
标签: kotlin rx-java type-inference rx-java2