Попытка конвертировать проект из Java в Kotlin.
Я застрял в методе, который возвращает ObservableTransformer из RXJava 2
protected <T> ObservableTransformer<T, T> onNetworkError() { return observable -> observable .doOnError(throwable -> networkError.setValue(throwable)); }
Преобразование этого с помощью intellij ide вызывает ошибку.
Ява в Котлин, используя идеал
protected fun <T> onNetworkError(): ObservableTransformer<T, T> { return { observable -> observable .doOnError({ throwable -> networkError.setValue(throwable) }) } }
Есть ли у кого-нибудь идея конвертировать вышеуказанный Java-код в Kotlin?
заранее спасибо
Ваш код возвращает функцию, которая принимает observable
неизвестный тип и возвращает объект Observable
.
Выражение лямбды, которое вам нужно, должно быть таким:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> { return ObservableTransformer { observable -> observable .doOnError({ throwable -> networkError.setValue(throwable) }) } }
В дополнение к ответу BakaWaii сверху, вы можете еще больше упростить код следующим образом:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> { return ObservableTransformer { it.doOnError { networkError.setValue(it) } } }
Однако, имея два разных значения, it
может ввести в заблуждение, поэтому вы можете оставить один из них явным параметром.