Ruby流量控制

ker*_*lin 10 ruby iteration controls

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

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

def a_method
   things.each do |t|
      # control options?
   end
end
Run Code Online (Sandbox Code Playgroud)

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

  1. 重试
  2. 返回
  3. 打破
  4. 下一个
  5. 重做

sep*_*p2k 16

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

return将从它内部的方法返回 - 在这种情况下来自a_method.

break将从屈服方法返回 - 在这种情况下是从each(a_method如果在每个块的结尾和结束之间发生了某些事情的情况下返回a_method).

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

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