2010-09-08 41 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