For loop 如何在Kotlin中创建传统的for循环

For loop 如何在Kotlin中创建传统的for循环,for-loop,kotlin,For Loop,Kotlin,JavaScript for (var x = 0; x < 360; x += 0.5) { // ... } 我还需要排除结束值,这就是为什么我要使用until 现在我将使用while循环: var x = 0.0; while (x < 360.0) { // ... x += 0.5 } var x=0.0; 而(x

JavaScript

for (var x = 0; x < 360; x += 0.5)
{
  // ...
}
我还需要排除结束值,这就是为什么我要使用
until


现在我将使用while循环:

var x = 0.0;

while (x < 360.0) {
  // ...
  x += 0.5
}
var x=0.0;
而(x<360.0){
// ...
x+=0.5
}

目前在Kotlin中没有实现这一点的方法,因为Kotlin没有用于循环的“传统”
。我相信您选择
while
循环是正确的。事实上,传统的
for
循环只是
,而
循环是伪装的:

for (init; condition; post;) {
    // do something
}
可以随时重写

init
while (condition) {
    // do something
    post
}
因为init语句将始终执行,并且在循环运行一次之前,条件将始终被检查。这个构造不能给你的一件事是一个只作用于这个块的变量。如果你真的在追求这种行为,下面的方法会奏效,尽管它不是很习惯用法

for (x in generateSequence(0.0) { it + 0.5 }.takeWhile { it < 360.0}) {
    println(x)
}

由于重复加法只是乘法的简写,您可以将(0.0中的x到360.0步骤0.5)
视为“只要
0.5
符合
360
的条件,就可以多次执行某项操作”。因此,可以这样表达:

val times = (360 / 0.5).toInt()
repeat(times){

}
当然,您也可以将时间内联到

repeat(times = (360 / 0.5).toInt()){

}
优点是可以跳过序列生成。Con--您失去了对计数变量x的访问权


另见

我同意@AdamYakes的回答。 由于
直到
运算符不适用于浮点值类型,因此不能使用
它用于浮动
步骤

但是,如果您仍然想使用

for (x in 0.0 until 360.0 step 0.5) {
  // use value
}
您可以按以下方式执行此操作:

for (x in 0 until 3600 step 5) {
  // use (value / 10)
}

这回答了你的问题吗?这可能不是完全的重复,因为它演示了一个封闭范围的解决方案,您似乎想要排除结束值。这实际上很可笑,Kotlin不能做一个简单的for循环。现在我将使用while循环,但我不喜欢冗长。范围界定并不是世界末日。谢谢你的回答。@DavidCallanan只是有点好奇,你用for循环做什么,你需要一个非整数范围?我用给定的步长在0度和360度之间的所有角度上循环谢谢,有趣的解决方案谢谢,如果我知道步长是什么,这个解决方案会起作用,但是在我的例子中,这个步骤被传递到我的函数中,所以这会变得更复杂。我只是想,如果您知道
step
值将是什么,那么这也是一种方法。
for (x in 0.0 until 360.0 step 0.5) {
  // use value
}
for (x in 0 until 3600 step 5) {
  // use (value / 10)
}