2012-03-05 29 views

回答

25

使用DOWNTO爲:

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

爲什麼不是「for(n in 100..1)」?難道這不是一個協議,如果第一個數字越大,範圍倒數? – x2bool 2014-09-02 10:09:17

1

如果你看一下你鏈接到確切的頁面,有一個reversed功能會建議讓你做for (n in (1..100).reversed()),但它似乎還沒有實現。 ..操作員總是加註。

+0

我看到了評論,並希望它已過時。 – jjnguy 2012-03-05 07:30:27

+0

@jjnguy嗯......也許是。提交'86a33f8'(2012年1月18日)增加了對'for(n in 100 downto 1)'和'for in(in in(1..100))'兩者具有相同含義的測試。他們爲你工作嗎? – hobbs 2012-03-05 07:37:13

+3

- (1..100)不再有效。正確的語法是(n in 100 downTo 1) – 2012-09-28 20:25:12

6

如使用-(1..100)中的減號-一元運算符支持反向範圍。

要調用該範圍的方法,則需要用圓括號包圍它,如(-(1..100)).foreach { println(it) }

+4

有沒有可能使rangeTo()函數變得更智能並自動處理?對我有一個負範圍意味着從-1到-100。 – jjnguy 2012-03-05 14:05:05

+0

我建議你看看以下與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

2

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

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

但爲什麼科特林隊選擇了100 downTo 1 VS 100..1

我認爲當我們嘗試使用變量而不是文字時,語法100..1會很糟糕。 如果我們輸入

for (n in b..a)

那就不是很清楚,我們想用什麼循環。

我們可能打算向後倒數,但如果b原來小於a,那麼我們的程序實際上會向上計數!這將是錯誤的來源。

相關問題