0
难道你们知道是否有可能知道该方法在什么类中定义?红宝石。哪个类定义了一个方法?
例如,
to_a在可枚举而在Numeric或其他地方可能定义。是否有与类对象一样的功能:
=> aaa=[1,2,3,4,5]
=> aaa.class
=> Array
是否有像“defined_in?”这样的方法?要了解在哪个类中定义了一个方法?
=> to_a.defined_in?
难道你们知道是否有可能知道该方法在什么类中定义?红宝石。哪个类定义了一个方法?
例如,
to_a在可枚举而在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