2013-03-09 156 views
0

难道你们知道是否有可能知道该方法在什么类中定义?红宝石。哪个类定义了一个方法?

例如,

to_a在可枚举而在Numeric或其他地方可能定义。是否有与类对象一样的功能:

=> aaa=[1,2,3,4,5] 
=> aaa.class 
=> Array 

是否有像“defined_in?”这样的方法?要了解在哪个类中定义了一个方法?

=> to_a.defined_in? 

回答

0

在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