2010-07-04 139 views
10

我找不到任何有用的资源在线,打破了Ruby的不同流量控制选项。红宝石流量控制

让我们假设我在一个方法遍历数组中:

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

我有什么不同的流量控制选择这里?他们有什么不同?

  1. 重试
  2. 回报
  3. 休息
  4. 下一个
  5. 重做

回答

16

retry可以救援块内使用,导致病情后跳回开始块该例外已被纠正。在块内部,它具有跳转到产生方法开始的效果。因此在每个内部这意味着重试将跳转到循环的开始。

return将从其内部的方法返回 - 在这种情况下从a_method

break将返回从屈服方法 - 在这种情况下,从each(这将是从a_method返回如果某物的每个块的结束和a_method端部之间发生的不同)。

next将从该块返回并因此跳转到things中的下一项。

redo将跳转到块的开始,因此重复当前的迭代。