投掷捕获用法而不是红宝石的其他元素

时间:2014-01-16 15:12:18

标签: ruby

我们应该使用throw-catch而不是ruby的其他元素,比如方法,lambdas / procs,return,raise-rescue等,这样我们就不会弄乱我们的代码(例如我们不需要寻找其他文件/类中的catch / throw)?或者换句话说,我可以使用throw-catch而不能(至少很容易)使用其他形式

例如,此代码(来自this answer):

catch (:done) do
  1.upto(INFINITY) do |i|
    1.upto(INFINITY) do |j|
      if j>10
        throw :done, :done
      end
    end
  end
end
你可以写成:

 def fun1
   1.upto(INFINITY) do |i|
     1.upto(INFINITY) do |j|
       if j>10
         return :done
       end
     end
   end
 end

Ruby I don't like #2 - catch(:wtf) { throw :wtf } post中,作者表明捕获量比投掷深4级。后来,他/她表明可以使用简单的结构来避免它。

那么throw-catch构造的独特用法在哪里使我们的生活更轻松?

0 个答案:

没有答案