Ruby1.9 の Proc 内 return の挙動に関するクイズ - sumim’s smalltalking-tos

screenshot

次のような #f が定義されたとき、def fyield proc{ |v| return v }endこれをコールする次のコードはどんな出力をするでしょうか?p f{ |b| 10.times{ |i| p i; b[i] if i == 5 } }もちろん Ruby には無用なテクニックなんですけれどもね。^^; 2ch で紹介されていた Smalltalk の #valueWithExit ...

http://d.hatena.ne.jp/sumim/20090216/p1

Ruby では無用ですが proc のコールで break 相当のことができるのがミソですね。
timesから抜けて5を返す。1.8.7だとprocはlambda相当だったので普通に連番が返る

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/sumim/20090216/p1