Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Kernelモジュール > catch
catch(tag) {|tag| .... } -> objectKernel.#throwとの組み合わせで大域脱出を行います。 catch はブロックを実行します。
ブロックの実行中に tag と同じ名前の Kernel.#throw が行われた 場合は、その throw の第二引数を戻り値として、ブロックの実行を終了します。
主にネストしたループから一気に脱出するのに使用します。
result = catch(:tag) do
for i in 1..2
for j in 1..2
for k in 1..2
throw :tag, k
end
end
end
end
p result #=> 1
[SEE_ALSO] Kernel.#throw