在ruby中重复数组的迭代

时间:2014-02-28 19:48:04

标签: ruby algorithm loops indexing

考虑我有一个带有条件内部的循环,如果条件为真,则必须重复循环的当前迭代。例如,请考虑以下方法。阅读if语句中的注释。

def func1(arr)
  size = arr.size - 1
  max = arr[size]
  0.upto(size) do |x|
    if (*boolean statement*)
      *repeat current iteration*
    end
  end
  func2(arr)
end

我该怎么做呢?如果你想知道为什么我需要这是因为我正在修改数组,如果条件对于给定的x为真,那么索引x处的元素将被移除并放置在数组的末尾。如果循环继续,那么它会跳过x之后的元素,因为这个元素现在已经删除了一个索引。在java中,这是通过我认为的continue关键字完成的,是否有ruby等价物?

谢谢!

2 个答案:

答案 0 :(得分:3)

使用redo

def func1(arr)
  size = arr.size - 1
  max = arr[size]
  0.upto(size) do |x|
    redo if (*boolean statement*)
  end
  func2(arr)
end

答案 1 :(得分:0)

如果我理解你的问题,你似乎就是这么简单 需要用'while'条件替换你的'if'条件:

def func1(arr)
  size = arr.size - 1
  max = arr[size]
  0.upto(size) do |x|
    while (*boolean statement*)
      *repeat current iteration*
    end
  end
  func2(arr)
end