0

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

让我们使用这行代码作为一个例子:toolkit = Toolkit.get_default_toolkit

现在工具包是用于工具包对象的变量和get_default_toolkit是方法/消息。在大多数代码中我发现模糊的是方法/消息没有在任何地方定义。所以我的问题是,我们(rubyists)可以学习的核心消息/方法列表是否在基本级别上使用?

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

回答

6

这些方法是在类定义中定义的,因为它们几乎适用于所有语言。 get_default_toolkit并不是一些低级别的方法,您必须通过核心Ruby类来寻找,它是类Toolkit的一部分,它将被定义在哪里定义类。

这样的方法,象那些在KernelObject定义,但是get_default_toolkit不是它们中的一个。

对于任何给定的方法,您可以通过调用object.method('method_name').owner来确定定义了哪个类,或通过调用.source_location找出它的定义位置(文件/行号)。

现在工具箱是在工具包对象

措辞进行更好的方法这是toolkit是一个可变的变量,Toolkit是一个类,toolkit现在包含一个新的实例Toolkit

+0

真棒答案 - 投! – Apane101 2013-03-20 05:46:32

1

如果你想找到什么方法调用,可用于对象或类,你可以调用它的

例如。方法

pp String.methods.sort 

thing = Array.new 
pp thing.methods.sort 

我喜欢称他们与PP和排序,使他们在一个可读的方式印刷