如何解决你如何用乘法或除法迭代 for 循环? [科特林]
在 Kotlin 中如何编写迭代步骤以进行乘法、除法或自定义迭代函数?我知道我可以改用 while 循环,但是 for 循环的范围似乎比其他语言更严格。这是故意的吗?
大多数其他语言提供的内容:
for(let i = 1; i <= 10; i *= 2) // [JavaScript]
for i := 1; i <= 10; i*=2 // [Golang]
我想在 Kotlin 中做什么(或类似的东西):
for(i in 1..10 step 2 * i) // [Kotlin]
如果我们可以在 for 循环体本身中引用迭代器会很容易,但是由于 i
不能在迭代步骤中被引用,因此上面会导致“未解析的引用”错误。
解决方法
您可以构造一个 system("taskkill /im java.exe /f",intern=FALSE,ignore.stdout=FALSE)
,然后对其进行迭代。
gc()
用法:
Sequence
,
是的,很遗憾 Kotlin 的设计者决定不支持 C 风格的 for
循环,但你可以用扩展函数做一些技巧。
声明中缀函数
// for increasing rangeTo (..)
infix fun IntRange.step(next: (Int) -> Int) =
generateSequence(first,next).takeWhile { if (first < last) it <= last else it >= last }
// for decreasing downTo
infix fun IntProgression.step(next: (Int) -> Int) = (first..last).step(next)
并像下面那样使用它
for (i in 1..10 step { it * 2 }) {
println(i)
}
输出
1
2
4
8
和
for (i in 16 downTo 1 step { it / 2 }) {
println(i)
}
输出
16
8
4
2
1
,
没错,Kotlin 中的 for
循环受设计限制。之所以决定这样做,是因为循环标题中的复杂条件容易出错。对于您的特定情况,我建议使用 while
循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。