在Kotlin中,我可以创建一个向后计数的范围吗?

我查看了范围的文档 ,我看不到任何向后的范围。

是否有可能做到这样的事情:

for (n in 100..1) { println(n) } 

并得到结果:

 100 99 98 ... 

使用downTo,如下所示:

 for (n in 100 downTo 1) { // } 

-(1..100)使用减一元运算符支持反转范围。

为了调用这个范围的方法,你需要用(-(1..100)).foreach { println(it) }圆括号括(-(1..100)).foreach { println(it) }

正如其他人所指出的,正确的答案是

 for (n in 100 downTo 1) { println(n) } 

但为什么Kotlin团队选择100 downTo 1100..1

我认为,当我们尝试使用variables而不是文字时,语法100..1会很糟糕。 如果我们输入

for (n in b..a)

那么就不清楚我们想用什么循环。

我们可能打算向后倒数,但是如果b小于a ,那么我们的程序实际上会向上计数! 这将是一个错误的来源。

如果你看看你链接到的确切页面,有一个reversed函数的建议,可以让你做for (n in (1..100).reversed())但它似乎还没有实现。 ..运算符总是计数。