让我解释一下我的问题,所以我清楚一些困惑。我有一系列图像,我想用它们创建一个拼贴画。所以,我需要不断从阵列中获取图像,直到拼贴完成。如果拼贴没有完成且阵列没有更多图像,我需要从阵列的开头获取图像。
我希望计数在0 ..(size_of_array - 1)范围内。
所以我有这个
size_of_array = my_array.size
count = 0
while (!collage_finished)
item = my_array[count]
collage_finished = insert_image_in_collage(item)
count += 1
end
我怎样才能使计数从0开始循环...(size_of_array-1) - 我想通过我的数组迭代多次。这就是我避免做.each
的原因。
答案 0 :(得分:1)
while true
my_array.each do |item|
#do stuff with item
end
end
答案 1 :(得分:1)
如果您想要反复循环遍历集合,可以使用cycle
。所以你会做类似的事情:
my_array.cycle do |item|
# do something with the item
end
如果你只想循环一定次数(通常是这种情况),你可以传递一个数字参数来循环指定你想要多少次。
答案 2 :(得分:1)
这样做:
while (!collage_finished)
item = my_array[count % size_of_array]
collage_finished = insert_image_in_collage(item)
count++
end
通过执行count % mod
,您将始终处于0..(size_of_array - 1)
答案 3 :(得分:0)
这被认为是一种糟糕的做事方式。您应该执行以下操作
my_array.each do |item|
# do stuff with item
end
这会遍历数组中的所有项目,并随之执行任何操作。
答案 4 :(得分:0)
你应该使用each
,但你也可以使用这样的东西:
array.size.times do |iteration|
item = array[iteration]
...
end