define_method

るびま21号の石塚さんインタビューで define_method というメソッドの存在を知る。

試してみた。

class Foo
 def initialize(val)
  @current=val
 end
 5.times do |i|
  define_method("plus"+i.to_s){@current+=i}
 end
end

foo=Foo.new(10)
p foo.plus1 #11
p foo.plus2 #13
p foo.plus3 #16

このメソッドを実際に使う状況は今の所思いつかないが、備忘録として。