在Ruby中,有没有办法找到响应方法调用的类?

时间:2014-05-01 19:35:46

标签: ruby introspection

所以,在Ruby中,如果我的类层次结构看起来像(非常符号)

A< B< C< Object

并在类"foo"中定义了一个方法C,是否有一些内省允许我确定C是定义该类的类响应A.new.foo的方法?

2 个答案:

答案 0 :(得分:10)

是......做A.new.method(:foo).owner。它将为您提供课程C。阅读#owner

答案 1 :(得分:1)

Method#owner是专为此目的而构建的,但也可以使用它:

A.ancestors.find { |c| c.instance_methods(false).include? :foo }