转换为Kotlin时编译错误

时间:2019-06-06 06:04:58

标签: kotlin rx-java

经过大量尝试,我无法成功将以下代码转换为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 个答案:

答案 0 :(得分:1)

对于我来说,要确认您的问题的正确答案是不可能的,因为您引用了一些值,因此也没有定义类型,并且您未提供有关这些值实际包含的信息。我不是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
}

我不会再组合更多的猜测代码来尝试运行此代码。我希望这对您来说是值得的。