我有一个阵列,让它说出来
array = ["apple", "orange", "banana"]
我也有一个循环:
boxes.each_with_index do |fruit, i|
... some code ...
array[i]
end
我不知道有多少箱子。我想要实现的是遍历数组(从" apple"到#" orange")多次迭代:苹果,橙子,香蕉,苹果......再次。
我找不到可以帮助我做到这一点的方法。另外,我考虑过在循环中重置一个计数器,但也没有成功。
您认为最优雅的解决方案是什么? 感谢。
答案 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