gpt4 book ai didi

java - 步长不规则的 Kotlin 循环

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:27 31 4
gpt4 key购买 nike

我一直在尝试将 Java for expression 翻译成生成此序列的 Kotlin:

1,2,4,8,16,32,64

这是 Java 代码:

for(int i = 1; i < 100; i = i + i) {
System.out.printf("%d,", i);
}

我发现将其翻译成 Kotlin 的唯一方法是:

var i = 1
while (i < 100) {
print("$i,")
i += i
}

我试过使用步骤表达式,但这似乎不起作用。有什么方法可以在 Kotlin 中更优雅地表达这种类型的序列?

我知道您可以使用 Kotlin + Java 9 编写这样的代码:

Stream.iterate(1, { it <= 100 }) { it!! + it }.forEach { print("$it,") }

但这依赖于 Java 库,我更喜欢 Kotlin 原生库。

最佳答案

您可以使用 generateSequence函数创建一个无限序列,然后使用takeWhile将其限制在特定值,然后使用 forEach而不是 for-in构造以处理每次迭代:

generateSequence(1) { it + it }.takeWhile { it < 100 }.forEach { print("$it,") }

关于java - 步长不规则的 Kotlin 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46384316/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com