2012-01-19 29 views

回答

9

試試這個:

25.downto(0) { |i| puts i } 
24

方式一:

25.downto(0) do |i| 
    puts i 
end 
+0

我想你想出了範圍可以不會像這樣使用;-) –

+0

這是別人的回答,因爲刪除了。當這正是'downto'的目的時,我不會想到使用範圍。 –

+0

對不起,那麼。我被這個答案逗樂了,但是沒有記住名字:-) –

49

有很多方法可以在Ruby中執行遞減循環:

第一種方式:

for i in (10).downto(0) 
    puts i 
end 

方式二:

(10).downto(0) do |i| 
    puts i 
end 

第三條道路:

i=10; 
until i<0 
    puts i 
    i-=1 
end 
+3

第一種方式包含無關的parens,並不是很習慣。第二種方式也包含無關的parens,有一個不必要的'each',並且有不必要的引號和變量插值。第三種方式簡單地被打破。 –

+0

@MarkThomas:我認爲多餘的括號是爲了讓新Ruby用戶看起來更尷尬,就像我一樣。在Javascript中,同樣的事情是可能的,但你需要使用兩個點(小數點和屬性訪問器):'65536..toExponential()'。這是允許訪問屬性的一種有些尷尬的方式,所以我想象至少在其他語言中使用或者甚至知道可能使用點直接訪問數字屬性的情況是不常見的。 –

12

downto是好的,但也有更多的通用step

25.step(0, -1){|i| puts i} 
1

萬一你是一個範圍已經工作:

rng = 0..6 
rng.reverse_each { |i| p i } 
2

這裏有一個簡單的辦法:

(0..25).reverse_each { |i| print i } 
+0

不起作用,範圍不會下降。 – steenslag

+0

@steenslag看起來你是對的。定影。 – edgerunner