Jac*_*s.S 5 kotlin rx-java rx-java2
我正在尝试为 Observable.subscribe 编写一个自动记录错误的扩展函数。
fun <T> Observable<T>.subscribeAndLogE(onNext: Consumer<in T>): Disposable =
subscribe(onNext, ErrorConsumer())
Run Code Online (Sandbox Code Playgroud)
ErrorConsumer 工作并可能记录错误,但subscribeAndLogE不像那样接受 lambdas .subscribe()。
observer.subscribe {
//works
}
observer.subscribeAndLogE {
//does not work
}
Run Code Online (Sandbox Code Playgroud)
它说:
该 OnboardingScreen 是T通常的值。
我看不出原来Consumer<in T>在Observable做什么特别的接受lambda表达式。我在这里做错了什么?
您正在将类型参数传递Consumer给函数。您需要传递一个函数才能使 lambda 语法起作用。这将按照您想要的方式工作:
fun <T> Observable<T>.subscribeAndLogE(onNext: (it : T) -> Unit): Disposable =
subscribe({ onNext(it) },{ throwable -> Log(throwable) })
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
observer.subscribeAndLogE {
//works
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |