维持一个范围之间的计数

时间:2014-01-22 01:04:34

标签: ruby

让我解释一下我的问题,所以我清楚一些困惑。我有一系列图像,我想用它们创建一个拼贴画。所以,我需要不断从阵列中获取图像,直到拼贴完成。如果拼贴没有完成且阵列没有更多图像,我需要从阵列的开头获取图像。

我希望计数在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的原因。

5 个答案:

答案 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