【发布时间】:2014-05-01 19:35:46
【问题描述】:
所以,在 Ruby 中,如果我的类层次结构看起来像(非常象征性地)
ABCObject
并且在类C 中定义了一个方法"foo",是否有一些内省 让我可以确定C 是定义响应@987654328 的方法的类@?
【问题讨论】:
标签: ruby introspection
所以,在 Ruby 中,如果我的类层次结构看起来像(非常象征性地)
ABCObject
并且在类C 中定义了一个方法"foo",是否有一些内省 让我可以确定C 是定义响应@987654328 的方法的类@?
【问题讨论】:
标签: ruby introspection
是的...做A.new.method(:foo).owner。它会给你上课C。阅读#owner。
【讨论】:
Method#owner 是为此专门构建的,但也可以使用:
A.ancestors.find { |c| c.instance_methods(false).include? :foo }
【讨论】: