Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 理解Ruby消息_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Rubygems - Fatal编程技术网

Ruby on rails 理解Ruby消息

Ruby on rails 理解Ruby消息,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,提供一些背景资料;在过去的几个月里,我一直在学习Ruby(已经阅读了大部分基础扎实的Ruby作者,完成了辛辣的Ruby指南,并计划在以后阅读雄辩的Ruby),但是,我掌握了大多数概念,即对象、Ruby内核(基础)、范围、循环等等,当涉及到向代码发送消息/方法时,我感到困惑 让我们以这行代码为例:toolkit=toolkit.get\u default\u toolkit 现在toolkit是toolkit对象的变量,get\u default\u toolkit是方法/消息。在大多数代码中,我

提供一些背景资料;在过去的几个月里,我一直在学习Ruby(已经阅读了大部分基础扎实的Ruby作者,完成了辛辣的Ruby指南,并计划在以后阅读雄辩的Ruby),但是,我掌握了大多数概念,即对象、Ruby内核(基础)、范围、循环等等,当涉及到向代码发送消息/方法时,我感到困惑

让我们以这行代码为例:
toolkit=toolkit.get\u default\u toolkit

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


或者这些方法的作用域很大,并且是在程序的其他地方定义的吗?

这些方法是在类定义中定义的,就像它们在几乎所有语言中一样
get\u default\u toolkit
不是您必须通过核心Ruby类查找的低级方法,它是类
toolkit
的一部分,并且将在定义该类的任何地方定义它

有这样的方法,比如
Kernel
Object
中定义的方法,但是
get\u default\u工具箱
不是其中之一

对于任何给定的方法,您都可以通过调用
object.method('method\u name').owner
来确定它是在哪个类中定义的,或者通过调用
.source\u location
来确定它是在哪里定义的(文件/行号)

现在toolkit是toolkit对象的变量


更好的表述方式是,
toolkit
是一个变量,
toolkit
是一个类,
toolkit
现在包含了
toolkit
类的一个新实例。

如果您想找到一个对象或类的可用方法调用,可以调用它的方法

e、 g

我喜欢将它们称为pp和sort,以便它们以可读的方式打印出来

pp String.methods.sort

thing = Array.new
pp thing.methods.sort