【发布时间】:2011-04-10 00:10:09
【问题描述】:
假设我有一个size 5 的数组。我想将一个索引(从 0 到 4)作为输入,并从提供的索引开始遍历数组。
例如,如果给定的索引是 3,我想像这样迭代:
arr[3]
arr[4]
arr[0]
arr[1]
arr[2]
我可以想出很多方法来做到这一点 - 但是 Ruby 方法 是什么?
【问题讨论】:
假设我有一个size 5 的数组。我想将一个索引(从 0 到 4)作为输入,并从提供的索引开始遍历数组。
例如,如果给定的索引是 3,我想像这样迭代:
arr[3]
arr[4]
arr[0]
arr[1]
arr[2]
我可以想出很多方法来做到这一点 - 但是 Ruby 方法 是什么?
【问题讨论】:
您可以从版本 1.9.2 开始使用Array#rotate
[4,3,6,7,8].rotate(2).each{|i|print i}
67843
【讨论】:
我可以想象在 ruby 中有很多方法可以做到这一点。不确定 ruby 方法是什么。也许:
arr.size.times do |i|
puts arr.at((3 + i).modulo(arr.size))
end
【讨论】:
鉴于您的索引是 i:
(arr.from(i) + arr[0,i]).each
【讨论】: