我们应该使用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构造的独特用法在哪里使我们的生活更轻松?