2011-10-09 32 views
5

可能重複:
Is there a reason that we cannot iterate on 「reverse Range」 in ruby?爲什麼不在Ruby中循環工作?例如。因爲我在10..1

這就像魔術。

for i in 1..10 
    ... 
end 

難道這只是後退for循環的工作嗎?

for i in 10..1 
    ... 
end 

如果有一些語法上的原因,爲什麼這不起作用,我覺得像ruby必須改變,以允許它。這種方式直接寫回來循環。

+1

您是否在尋找解決方法的實際或者爲什麼它不工作的原因? – slhck

+0

只是想知道爲什麼它不起作用。我知道其他的選擇。 –

+0

@closevoters:足夠的新手問題。當我開始編程Ruby時,我期望'10..1'工作。 –

回答

11

1..10屬於類Range,不與任何循環結構直接鏈接。並且沒有數字都大於10且小於1,因此範圍10..1爲空。

PS我不記得是什麼時候我最後一次寫Ruby for Ruby的循環。也許http://www.ruby-doc.org/core-1.9.2/Enumerable.html會爲您提供更好的服務?

+1

很好的解釋。 – Problematic

+0

謝謝。當我使用Rails的時候,我從來沒有必要偶爾使用它。我只是想嘗試用Ruby編寫不同的排序方法,並花了一些時間試圖找出我出錯的地方。原來我無法以這種方式向後循環。 –

11

嘗試像

10.downto(1) { |i| ... } 
相關問題