フラットスコープの実験
メタプログラミング Ruby で例示されてるコードは Kernel を書き換えたりしててちょっとお茶目過ぎるのでマイルドなバージョンを
(追記) バグっています。くわしくは id:metanest:20101112#1289514341 を
class Counter def initialize initval count = initval self.class.__send__(:define_method, :inc) { count += 1 } self.class.__send__(:define_method, :dec) { count -= 1 } end end foo = Counter.new 0 p foo.inc p foo.inc p foo.dec p foo.dec
$ ruby19 foo.rb 1 2 1 0