1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class Hoge def initialize(opts={}) if opts[:dynamic] def name "dynamic" end end end def name "static" end end #=> nil h = Hoge.new #=> #<Hoge:0x7f2c5fad2388> h.name #=> "static" h2 = Hoge.new(:dynamic => true) #=> #<Hoge:0x7f2c5fac4648> h2.name #=> "dynamic" h.name #=> "dynamic" !!!!!!!!!!!! |
ポイント: メソッド内で分岐してメソッドを定義すると、全てのインスタンスのメソッドが変わるようだ。