08/05/06 00:47:39
>>396
なるほどsuperは確かに無関係だった。
383も言ってるように def...endという定義文じゃなくてメソッドなら期待したように動く。
class Foo
def define_hello
self.class.send(:define_method, :hello) do
puts "Hello"
end
end
end
class Bar < Foo
end
kind_of_foo = Bar.new
kind_of_foo.define_hello
kind_of_foo.hello #=> Hello
foo = Foo.new
foo.hello #=> undefined method `hello' for #<Foo:0xb7d19734> (NoMethodError)
メソッドの可視性はあんまり気にしない、
動的にメソッド定義したいならeval系のメソッドを使う、
という脳なので入れ子defの挙動がどうであれ、あんまり困らない。