鲁比(人名)方法定义在哪个类中



你们知道是否有可能了解该方法定义在哪个类中吗?

例如,

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

最新更新