经过大量尝试,我无法成功将以下代码转换为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;
})
答案 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
}
我不会再组合更多的猜测代码来尝试运行此代码。我希望这对您来说是值得的。