Reputation: 13
Trying to convert a project from Java to Kotlin.
I got stuck on a method that returns ObservableTransformer from RXJava 2
Java
protected <T> ObservableTransformer<T, T> onNetworkError() {
return observable -> observable
.doOnError(throwable -> networkError.setValue(throwable));
}
Converting this using intellij ide throws an error.
Java to Kotlin using ide
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return { observable ->
observable
.doOnError({ throwable -> networkError.setValue(throwable) })
}
}
Does anyone have an idea to convert the above Java code to Kotlin?
Thanks in advance
Upvotes: 1
Views: 747
Reputation: 6803
Additionally to BakaWaii's response from above, you can further simplify the code as follows:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return ObservableTransformer {
it.doOnError { networkError.setValue(it) }
}
}
However, having two different it
s might be confusing, so you might want to leave one of them as an explicit parameter.
Upvotes: 1
Reputation: 6992
Your code is returning a function which accepts observable
of unknown type and returns an Observable
object.
The lambda expression you need should be like this:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return ObservableTransformer { observable ->
observable
.doOnError({ throwable -> networkError.setValue(throwable) })
}
}
Upvotes: 2