0

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

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

现在 toolkit 是 Toolkit 对象的变量,而 get_default_toolkit 是方法/消息。我在大多数代码中发现模棱两可的是方法/消息没有在任何地方定义。所以我的问题是,是否有一个我们(rubyists)可以研究的核心消息/方法列表,这些信息/方法可以在基础层面使用?

还是这些方法的范围很大,并且在程序中的其他地方定义?

4

2 回答 2

6

这些方法是在类定义中定义的,因为它们几乎适用于每种语言。get_default_toolkit不是您必须通过核心 Ruby 类来查找的低级方法,它是类的一部分,Toolkit并且将在定义该类的任何位置进行定义。

这样的方法,比如在Kernelor中定义的那些Object,但get_default_toolkit不是其中之一。

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

现在 toolkit 是 Toolkit 对象的变量

更好的表达方式是,它toolkit是一个变量,Toolkit是一个类,现在包含该类的toolkit一个新实例Toolkit

于 2013-03-20T05:43:46.217 回答
1

如果您想查找可用于对象或类的方法调用,您可以在其上调用 .methods

例如

pp String.methods.sort

thing = Array.new
pp thing.methods.sort

我喜欢用 pp 调用它们并排序,以便它们以可读的方式打印

于 2013-03-20T07:27:42.287 回答