我看着the documentation for the Ranges,我看不到倒退範圍。在Kotlin中,我可以創建一個向後計數的範圍嗎?
是否有可能做這樣的事情:
for (n in 100..1) {
println(n)
}
而得到的結果:
100
99
98
...
我看着the documentation for the Ranges,我看不到倒退範圍。在Kotlin中,我可以創建一個向後計數的範圍嗎?
是否有可能做這樣的事情:
for (n in 100..1) {
println(n)
}
而得到的結果:
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 2012-03-05 14:05:05
我建議你看看以下與Kotlin範圍有關的問題,並提交一個新問題,詳細解釋你的建議: [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) – 2012-03-05 20:19:48
正如指出的其他人,正確的答案是
for (n in 100 downTo 1) {
println(n)
}
但爲什麼科特林隊選擇了100 downTo 1
VS 100..1
?
我認爲當我們嘗試使用變量而不是文字時,語法100..1
會很糟糕。 如果我們輸入
for (n in b..a)
那就不是很清楚,我們想用什麼循環。
我們可能打算向後倒數,但如果b
原來小於a
,那麼我們的程序實際上會向上計數!這將是錯誤的來源。
爲什麼不是「for(n in 100..1)」?難道這不是一個協議,如果第一個數字越大,範圍倒數? – x2bool 2014-09-02 10:09:17