Ruby流量控制

时间:2010-07-04 13:41:30

标签: ruby controls iteration

我无法在网上找到任何有用的资源来分解Ruby的不同流控制选项。

让我们假设我在一个方法中迭代一个数组:

def a_method
   things.each do |t|
      # control options?
   end
end

这里有哪些不同的流量控制选项?他们有什么不同?

  1. 重试
  2. 返回
  3. 断裂
  4. redo

1 个答案:

答案 0 :(得分:16)

retry可以在救援区内使用,在导致异常的条件得到纠正后跳回到开始区块。在一个区块内,它具有跳到屈服方法开始的效果。因此,在每个内部意味着重试将跳转到循环的开始。

return将从其内部的方法返回 - 在本例中来自a_method

break将从yielding方法返回 - 在这种情况下来自each(如果在每个块的结尾和之间发生了某些事情,则与从a_method返回的情况不同结束a_method)。

next将从块中返回,从而跳转到things中的下一个项目。

redo将跳转到块的开头,从而重复当前的迭代。