2007-05-13 PStore ruby PStore#commit 、 PStore#abort でブロックを抜けるのはどうやってやってるんだろうと思ってソースを見てみた。catch を使ってやってるのね。 class Sample def test catch(:exit) { yield } end def commit throw :exit end end s = Sample.new s.test { puts "1" s.commit puts "2" } #=> 1 しか出力されない ちなみに pstore.rb のインデントがずれてたのは何故!?