你们知道是否有可能了解该方法在哪个类中定义?
例如,
to_a 可能在 Enumerable 和 Numeric 或其他地方定义。是否有一个函数,比如类对象:
=> aaa=[1,2,3,4,5]
=> aaa.class
=> Array
有没有像“defined_in”这样的方法?了解方法定义在哪个类中?
=> to_a.defined_in?
在 Ruby 1.9 及更高版本上,您可以使用Method#source_location
. 在 Ruby 1.8 上,有一个 gem ruby18_source_location可以向后移植此功能。
请参阅https://stackoverflow.com/a/13015691/260122和同一问题的其他答案,以更好地讨论分析源代码的进一步方法,包括调试器。
编辑:对不起,我误读了你的问题。要找出哪个类或模块定义了一个方法,请使用Method#owner
. 如:
> %w(a a a).method(:to_a).owner
=> Array