Rubyで、クラスの内部から基底クラスのメソッドを呼び出す場合は、 superを使えば良いのですが、 どうしても外部から基底クラスのメソッドを呼び出したい場合には、 以下のようにすれば実現出来ます。

   1  >> class Foo; def foo; puts "foo#{self}"; end end
   2  => nil
   3  >> class Bar < Foo; def foo; puts "bar#{self}"; end end
   4  => nil
   5  >> Bar.new.foo
   6  bar#<Bar:0x25c2d60>

このように、通常は基底クラスのメソッドを直接呼び出す事は出来ませんが、

   1  >> Foo.instance_method(:foo).bind(Bar.new).call
   2  foo#<Bar:0x25b7f00>

一度UnboundMethodにしてから、もう一度バインドする事で、 基底クラスのメソッドを呼び出す事が出来ます。

posted by Png genki on Sun 25 Jan 2009 at 06:43

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry1247
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ