Ошибки компиляции при конвертации в Kotlin - PullRequest
0 голосов
/ 06 июня 2019

После многих попыток я не смог успешно преобразовать следующий код в Kotlin. Я получаю все виды ошибок компиляции независимо от того, что я делаю. Может кто-нибудь преобразовать это для меня, чтобы я мог видеть, что я делаю неправильно:

Observable<Message> sendMessageObservable = networkClient.sendMessage(message);

sendMessageObservable.retryWhen(throwable -> {
    Observable<Long> retrySignal = throwable.zipWith(Observable.range(0, 6), (t, i) -> i)
                                            .flatMap(i -> { final long delay = (long) Math.pow(2, i);
                                                             return Observable.timer(delay, TimeUnit.SECONDS);
                                                          }
                                                     );

    return retrySignal;
})

1 Ответ

1 голос
/ 06 июня 2019

Невозможно подтвердить правильный ответ на ваш вопрос, потому что вы ссылаетесь на несколько значений и, следовательно, на типы, которые вы не определяете, и не даете никакой информации о том, что эти значения на самом деле содержат.Я не разработчик Android.Возможно, если бы я был, я бы знал, какими должны быть типы 'networkClient' и 'message'.На самом деле, я составил несколько типов и значений, которые позволили мне скомпилировать ваш код на Java.Затем я конвертировал его в Kotlin и получил этот эквивалентный код для компиляции:

val sendMessageObservable = networkClient.sendMessage(message)

sendMessageObservable!!.retryWhen { throwable ->
    val retrySignal = throwable.zipWith<Int, Int>(Observable.range(0, 6), BiFunction<Throwable, Int, Int> { _, i -> i})
            .flatMap { i ->
                val delay = Math.pow(2.0, i.toDouble()).toLong()
                Observable.timer(delay, TimeUnit.SECONDS)
            }
    retrySignal
}

Я не собираюсь собирать больше угадывающего кода, чтобы попытаться запустить это.Надеюсь, это чего-то стоит для вас как есть.

...