Rails:多次遍历数组

时间:2017-05-19 19:05:52

标签: ruby

我有一个阵列,让它说出来

array = ["apple", "orange", "banana"]

我也有一个循环:

boxes.each_with_index do |fruit, i|
  ... some code ...
  array[i]
end

我不知道有多少箱子。我想要实现的是遍历数组(从" apple"到#" orange")多次迭代:苹果,橙子,香蕉,苹果......再次。

我找不到可以帮助我做到这一点的方法。另外,我考虑过在循环中重置一个计数器,但也没有成功。

您认为最优雅的解决方案是什么? 感谢。

2 个答案:

答案 0 :(得分:4)

array_enumerator = array.cycle

然后,您可以随时拨打array_enumerator.next。它进入周期。

请参阅#cycle方法的官方ruby文档:https://ruby-doc.org/core-2.4.0/Array.html#method-i-cycle

答案 1 :(得分:2)

我同意@Ursus cycle可能是最好的,但您也可以使用Array#rotate!

arr = [1,2,3]
a = arr.dup.rotate!(-1) #=> [3, 1, 2]

a.rotate!.first         #=> 1
a.rotate!.first         #=> 2
a.rotate!.first         #=> 3
a.rotate!.first         #=> 1