Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails:对数组进行多次迭代_Ruby - Fatal编程技术网

Ruby Rails:对数组进行多次迭代

Ruby Rails:对数组进行多次迭代,ruby,Ruby,我有一个数组,假设它是 array = ["apple", "orange", "banana"] 我还有一个循环: boxes.each_with_index do |fruit, i| ... some code ... array[i] end 我不知道有多少盒子。我想要实现的是迭代数组(从“apple”到“orange”)所需的次数:apple、orange、banana、apple。。。一次又一次 我找不到一种方法可以帮助我做到这一点。此外,我曾考虑在循环中重置计数器,但也

我有一个数组,假设它是

array = ["apple", "orange", "banana"]
我还有一个循环:

boxes.each_with_index do |fruit, i|
  ... some code ...
  array[i]
end
我不知道有多少盒子。我想要实现的是迭代数组(从“apple”到“orange”)所需的次数:apple、orange、banana、apple。。。一次又一次

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

你认为最优雅的解决方案是什么? 谢谢

然后,您可以随时调用
array\u枚举器。它是循环的

有关#循环方法,请参阅ruby官方文档:

然后,您可以随时调用
array\u枚举器。它是循环的


参见ruby官方文档中的#cycle方法:

我同意@Ursus的观点,
cycle
在这里可能是最好的,但您也可以使用:


我同意@Ursus的观点,即
cycle
在这里可能是最好的,但您也可以使用:


这是一个纯粹的Ruby问题,因此我建议您在标题中删除“Rails”,并删除“RubyonRails”标记。Rails标签浪费了只想看到Rails问题的成员(即,在Rails上过滤的成员)的时间,并阻止过滤掉Rails问题的成员看到您的问题。另外,我不认为“数组”或“循环”是有用的标记。这是一个纯粹的ruby问题,所以我建议你在标题中划掉“Rails”,去掉“RubyonRails”标签。Rails标签浪费了只想看到Rails问题的成员(即,在Rails上过滤的成员)的时间,并阻止过滤掉Rails问题的成员看到您的问题。另外,我不认为“数组”或“循环”是有用的标记。我只要“红宝石”。
array_enumerator = array.cycle
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