私はthe documentation for the Rangesを見ました。後方の範囲については言及していません。結果Kotlinでは後方に数えられる範囲を作成できますか?
for (n in 100..1) {
println(n)
}
とget:
100
99
98
...
私はthe documentation for the Rangesを見ました。後方の範囲については言及していません。結果Kotlinでは後方に数えられる範囲を作成できますか?
for (n in 100..1) {
println(n)
}
とget:
100
99
98
...
使用とdowntoは、のように:他の人が指摘したように
for (n in 100 downTo 1) {
//
}
あなたがにリンクされている正確なページを見れば、その希望reversed
機能について提案があります
のような何かを行うことが可能ですfor (n in (1..100).reversed())
をやってみましょうが、まだ実装されていないようです。 ..
演算子は常にカウントアップします。
逆さまの範囲は、の単項演算子を使用して-(1..100)
のようにサポートされます。
その範囲のメソッドを呼び出すには、(-(1..100)).foreach { println(it) }
のようにカッコで囲む必要があります。
rangeTo()関数を少しスマートにして自動的に処理する可能性はありますか?マイナスの範囲は-1から-100までカウントすることを意味します。 – jjnguy
コトリンの範囲に関する次の問題を見て、あなたの提案を詳しく説明する新しい問題を提出することをお勧めします: [KT-861](http://youtrack.jetbrains.com/issue/KT-861) 、[KT-1045](http://youtrack.jetbrains.com/issue/KT-1045)、[KT-1076](http://youtrack.jetbrains.com/issue/KT-1076) –
、正解は
for (n in 100 downTo 1) {
println(n)
}
である。しかし、なぜKotlinチームは100..1
対100 downTo 1
を選んだのですか?
リテラルの代わりに変数を使用しようとすると、構文100..1
が悪いと思います。私たちは、その後
for (n in b..a)
逆算することを意図している可能性がありますが、b
がa
より小さくなると、プログラムは実際には上向きにカウントされます。それはバグの原因になるでしょう。
なぜそうではない"for(n in 100..1)"?最初の数字が大きいと範囲が後ろになるという合意はできませんか? – x2bool