25th Sun
外部から基底クラスのメソッドを呼び出す方法のメモ
Rubyで、クラスの内部から基底クラスのメソッドを呼び出す場合は、
superを使えば良いのですが、
どうしても外部から基底クラスのメソッドを呼び出したい場合には、
以下のようにすれば実現出来ます。
ruby>>
class Foo; def foo; puts "foo#{self}"; end end
=> nilclass Bar < Foo; def foo; puts "bar#{self}"; end end
=> nilBar.new.foo
bar#Bar:0x25c2d60
<<--
このように、通常は基底クラスのメソッドを直接呼び出す事は出来ませんが、
ruby>>
Foo.instance_method(:foo).bind(Bar.new).call
foo#Bar:0x25b7f00
<<--
一度UnboundMethodにしてから、もう一度バインドする事で、
基底クラスのメソッドを呼び出す事が出来ます。
posted by
genki on Sun 25 Jan 2009 at 06:38 with 0 comments