Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library _builtin > module Kernel > catch
catch {|tag| .... } -> object
catch(tag) {|tag| .... } -> object
Kernel.#throwとの組み合わせで大域脱出を行います。 catch はブロックを実行します。
ブロックの実行中に tag と同一のオブジェクトを引数とする Kernel.#throw が行われた 場合は、その throw の第二引数を戻り値として、ブロックの実行を終了します。
主にネストしたループから一気に脱出するのに使用します。
引数を省略した場合、タグとなるオブジェクトが内部で生成せれ、ブロック引数 tag に 渡されます。
result = catch do |tag| 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