所以,在Ruby中,如果我的类层次结构看起来像(非常符号)
A
< B
< C
< Object
并在类"foo"
中定义了一个方法C
,是否有一些内省允许我确定C
是定义该类的类响应A.new.foo
的方法?
答案 0 :(得分:10)
是......做A.new.method(:foo).owner
。它将为您提供课程C
。阅读#owner
。
答案 1 :(得分:1)
Method#owner是专为此目的而构建的,但也可以使用它:
A.ancestors.find { |c| c.instance_methods(false).include? :foo }