理解Ruby消息

时间:2013-03-20 05:37:46

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

提供一些背景;在过去的几个月里我一直在学习Ruby(已经阅读了大部分Well-Grounded-Rubyist,完成了Poignant ruby​​指南,并计划在之后阅读Eloquent ruby​​)我已经掌握了大多数概念,即Objects,Ruby内核(基础),范围,循环等等,但是,在将消息/方法发送到代码时,我感到很困惑。

我们以这行代码为例:toolkit = Toolkit.get_default_toolkit

现在toolkit是Toolkit对象的变量,get_default_toolkit是方法/消息。我在大多数代码中发现含糊不清的是方法/消息没有在任何地方定义。所以我的问题是,是否有一个我们(rubyists)可以研究的Kernal消息/方法列表在基础层面上使用?

或者这些方法只有大范围,并且在程序中的其他地方定义了吗?

2 个答案:

答案 0 :(得分:6)

这些方法在类定义中定义,因为它们几乎适用于所有语言。 get_default_toolkit不是一些低级方法,你必须通过核心Ruby类来查找它,它是类Toolkit的一部分,并且它将被定义在定义类的哪个地方。 / p>

这样的方法,如KernelObject中定义的方法,但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和它们打电话给它们,以便以可读的方式打印它们