Intereting Posts
Kotlin on android: Не удается найти основной объединенный манифест. Что вызывает эту ошибку? Выход из системы не работает в приложении Spring Boot (метод POST не поддерживается) Обновления / регенерации синтетического вида Android Studio Kotlin Переопределить аннотацию @JsonIgnore для некоторых контроллеров. Джексон. весна Почему результат функции не работает как предложение в заявлении when в Kotlin? Kapt + LoganSquare не работает должным образом при сопоставлении как реализовать OnClickListener для пользовательского ViewHolder в моем просмотре recycler? Kapt generatestubs – невозможно инициализировать объект с помощью внутреннего конструктора из unit-test Не удалось загрузить ошибку класса kotlin.collections.CollectionsKT при попытке синхронизации градиента Что такое эквивалент Kotlin строки Java ? Невозможно выполнить добавление BigInteger В тестовом пакете не читаются классы Котлина, определенные в основном пакете Как подписаться на события хаба после того, как hubConnection был повторно подключен в signalR на Android? Класс данных KotlinReflectionInternalError android.view.InflateException: двоичная строка XML-файла # 32: двоичная строка XML-файла # 32: ошибка раздувания класса

Метод подстановки Котлина

У меня возникли проблемы с использованием функции retryWhen в RxJava.

Когда я создаю функцию, которая будет передана для retryWhen в Observable , я не могу вызвать функцию zipWith . Кажется, что Котлин ожидает чего-то, чего нельзя отнести здесь.

В этом примере it.zipWith не работает (доступны некоторые другие методы, но не этот):

  val retryFunc = Func1<Observable<out Throwable>, Observable<Any>> { // zipWith is not possible to call it.zipWith<Int, Any>(Observable.range(1, 3), Func2<Throwable, Int, Any> { throwable, integer -> if (integer > 2) { return@Func2 Observable.error<Any>(Exception()) } Observable.timer(1, TimeUnit.SECONDS) }) } Observable.just("1", "2", "3").retryWhen(retryFunc) 

Если я изменяю входящие параметры на Func1<Observable<in Throwable> ... , ключевое слово in позволяет использовать функцию zipWith . Но после того, как я изменился, retryWhen(retryFunc) вызова. retryWhen(retryFunc) показывает ошибку:

Несоответствие типов: Ожидание Throwable, найдено в Throwable

  val retryFunc = Func1<Observable<in Throwable>, Observable<Any>> { it.zipWith<Int, Any>(Observable.range(1, 3), Func2<Throwable, Int, Any> { throwable, integer -> if (integer > 2) { return@Func2 Observable.error<Any>(Exception()) } Observable.timer(1, TimeUnit.SECONDS) }) } Observable.just("1", "2", "3").retryWhen(retryFunc) // type mismatch here, expected out, found in 

Кто-нибудь знает, как я могу получить и произвести тот же тип в Котлине?

Уметь создать zipWith и вернуть ожидаемое значение?

Solutions Collecting From Web of "Метод подстановки Котлина"