Ruby1.9 の Proc 内 return の挙動に関するクイズ


次のような #f が定義されたとき、

def f
  yield proc{ |v| return v }
end


これをコールする次のコードはどんな出力をするでしょうか?

p f{ |b| 10.times{ |i| p i; b[i] if i == 5 } }


もちろん Ruby には無用なテクニックなんですけれどもね。^^; 2ch で紹介されていた Smalltalk の #valueWithExit の実装を見ていて面白いなと思ったので。