質問

So, in Ruby, if I have a class hierarchy that looks something like (very symbolically)

A < B < C < Object

and have a method "foo" defined in class C, is there some bit of introspection that allows me to determine that C is the class defining the method that responds to A.new.foo?

役に立ちましたか?

解決

Yes... do A.new.method(:foo).owner. It will give you class C. Read #owner.

他のヒント

Method#owner is purpose-built for this, but this could also be used:

A.ancestors.find { |c| c.instance_methods(false).include? :foo }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top