2013-03-09 37 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