从array[n]迭代到array[n-1],使用的是“Ruby方式”吗?

6

假设我有一个大小为5的数组。我想以0-4之间的某个数字作为输入,并从该数字开始迭代数组。

例如,如果输入的数字是3,我希望按以下方式进行迭代:

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

我可以想到很多方法来实现这个目标,但是有没有符合 Ruby 语言特色 的方法呢?

3个回答

14

你可以使用1.9.2版本中的Array#rotate方法。

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

 67843

嘿,我知道肯定有一种好方法可以做到这件事 :) 真不敢相信我竟然错过了1.9.2的发布!! - nfm

1

在 Ruby 中有很多种方法可以做到这一点。不确定哪种是“标准”的 Ruby 方法。也许是:

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

1
我认为使用索引不是 Ruby 的方式。 - Nakilon
很好,我的意思更多的是有许多方法可以做到这一点,而不是可能提供一个明确的答案。 - Shadwell

0

假设您的索引为i:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接