在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 1
和100..1
?
我认为,当我们尝试使用variables而不是文字时,语法100..1
会很糟糕。 如果我们输入
for (n in b..a)
那么就不清楚我们想用什么循环。
我们可能打算向后倒数,但是如果b
小于a
,那么我们的程序实际上会向上计数! 这将是一个错误的来源。
如果你看看你链接到的确切页面,有一个reversed
函数的建议,可以让你做for (n in (1..100).reversed())
但它似乎还没有实现。 ..
运算符总是计数。