0

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

例如,

to_a 可能在 Enumerable 和 Numeric 或其他地方定义。是否有一个函数,比如类对象:

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

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

=> to_a.defined_in?
4

1 回答 1

0

在 Ruby 1.9 及更高版本上,您可以使用Method#source_location. 在 Ruby 1.8 上,有一个 gem ruby​​18_source_location可以向后移植此功能。

请参阅https://stackoverflow.com/a/13015691/260122和同一问题的其他答案,以更好地讨论分析源代码的进一步方法,包括调试器。


编辑:对不起,我误读了你的问题。要找出哪个类或模块定义了一个方法,请使用Method#owner. 如:

> %w(a a a).method(:to_a).owner
=> Array
于 2013-11-15T19:46:55.263 回答