Intereting Posts

Java – общий для Kotlin generic. Возвращать общий метод

Попытка конвертировать проект из 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 может ввести в заблуждение, поэтому вы можете оставить один из них явным параметром.