我查看了Ranges的文档,但我没有看到向后范围.
有可能做这样的事情:
for (n in 100..1) {
println(n)
}
Run Code Online (Sandbox Code Playgroud)
得到结果:
100
99
98
...
Run Code Online (Sandbox Code Playgroud)
Had*_*iri 64
使用downTo,如:
for (n in 100 downTo 1) {
//
}
Run Code Online (Sandbox Code Playgroud)
使用减-
一元运算符支持反转范围,如-(1..100)
.
要调用该范围的方法,您需要用括号括起它,如下所示(-(1..100)).foreach { println(it) }
.
正如其他人指出的那样,正确的答案是
for (n in 100 downTo 1) {
println(n)
}
Run Code Online (Sandbox Code Playgroud)
但是为什么Kotlin团队选择了100 downTo 1
vs 100..1
?
我认为100..1
当我们尝试使用变量而不是文字时,语法会很糟糕。如果我们输入
for (n in b..a)
那么不清楚我们要使用哪个循环。
我们可能打算倒数,但是如果b
结果小于a
,那么我们的程序实际上将倒数!那将是错误的来源。
仅作为“ for”的通用范围函数的一个示例:
private infix fun Int.toward(to: Int): IntProgression {
val step = if (this > to) -1 else 1
return IntProgression.fromClosedRange(this, to, step)
}
Run Code Online (Sandbox Code Playgroud)
用法:
// 0 to 100
for (i in 0 toward 100) {
// Do things
}
// 100 downTo 0
for (i in 100 toward 0) {
// Do things
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9224 次 |
最近记录: |