2010-09-08 30 views
6

假設我有一個size的數組5.我想將一個索引(從0-4)作爲輸入,並從提供的索引處開始遍歷數組。什麼是'Ruby方式'迭代數組 - 從數組[n]到數組[n - 1]?

例如,如果給出的指數爲3,我想重複,像這樣:

arr[3] 
arr[4] 
arr[0] 
arr[1] 
arr[2] 

我能想到很多方法可以做到這一點 - 但什麼是Ruby的方式辦呢?

回答

14

您可以使用Array#rotate從版本1.9.2

[4,3,6,7,8].rotate(2).each{|i|print i} 

67843 
+0

+1使用內置插件 – 2010-09-08 23:05:02

+0

這真是太神奇了。 – 2010-09-08 23:41:42

+0

嘿,我知道會有一個很好的方式來做到這一點:)不能相信我錯過了1.9.2被釋放! – nfm 2010-09-08 23:56:32

1

有很多方法可以做到這一點在紅寶石我應該想象。不知道是什麼紅寶石的方式來做到這一點。也許:

arr.size.times do |i| 
    puts arr.at((3 + i).modulo(arr.size)) 
end 
+1

我不認爲,在使用指標是紅寶石路。 – Nakilon 2010-09-08 23:02:42

+0

公平不夠,我的觀點更多的是有很多方法可以做到,而不是提供明確的答案。 – Shadwell 2010-09-08 23:12:22

0

鑑於你的索引是我:

(arr.from(i) + arr[0,i]).each 
+1

WTF'從'? _Oo – Nakilon 2011-01-07 14:57:35