提供一些背景;在过去的几个月里我一直在学习Ruby(已经阅读了大部分Well-Grounded-Rubyist,完成了Poignant ruby指南,并计划在之后阅读Eloquent ruby)我已经掌握了大多数概念,即Objects,Ruby内核(基础),范围,循环等等,但是,在将消息/方法发送到代码时,我感到很困惑。
我们以这行代码为例:toolkit = Toolkit.get_default_toolkit
现在toolkit是Toolkit对象的变量,get_default_toolkit是方法/消息。我在大多数代码中发现含糊不清的是方法/消息没有在任何地方定义。所以我的问题是,是否有一个我们(rubyists)可以研究的Kernal消息/方法列表在基础层面上使用?
或者这些方法只有大范围,并且在程序中的其他地方定义了吗?
答案 0 :(得分:6)
这些方法在类定义中定义,因为它们几乎适用于所有语言。 get_default_toolkit
不是一些低级方法,你必须通过核心Ruby类来查找它,它是类Toolkit
的一部分,并且它将被定义在定义类的哪个地方。 / p>
是这样的方法,如Kernel
或Object
中定义的方法,但get_default_toolkit
不是其中之一。
对于任何给定的方法,您可以通过调用object.method('method_name').owner
找出它所定义的类,或通过调用.source_location
找出它的定义位置(文件/行号)。
现在,toolkit是Toolkit对象的变量
更好的措辞方法是toolkit
是一个变量,而Toolkit
是一个类,toolkit
现在包含一个新的实例 Toolkit
上课。
答案 1 :(得分:1)
如果你想找到一个可用于对象或类的方法调用,可以在其上调用.methods
e.g。
pp String.methods.sort
thing = Array.new
pp thing.methods.sort
我喜欢用pp和它们打电话给它们,以便以可读的方式打印它们