执行方法
method execution
调用方法时,Ruby要做两件事:首先找到这个方法,然后执行这个方法。到目前为止,我们只学会了如何找到这个方法,接下来看看如何执行方法。
假设我们自己就是Ruby解释器,现在调用了一个名叫my_method的方法,我们先找到方法,发现该方法定义如下:
def my_method temp = @x + 1 my_other_method(temp) end
为了执行这个方法,需要知道两个地方。 首先,实例变量@x属于那个对象?其次,应该在那个对象上调用方法my_other_method?
我们凭直觉就能知道:@x实例变量和 my_other_method方法都属于接受者----那个最初调用,my_method方法的对象。 不过, Ruby可没有那么强的直觉。调用方法时,Ruby需要持有一个接收者的引用,正式由于这个引用,Ruby才知道那个是接收者,再用它来执行这个方法。
self关键字
Ruby的每一行代码都会在一个对象中被执行------这个对象就是所谓的当前对象。当前对象也可以用self表示,因为可以用self关键字来对它进行访问。
任何时刻,只有一个对象能充当当前对象,而且没有那个对象能够长期充当这个角色。调用一个方法时,接收者就成为self。从这一刻起所有的实例变量都是self 的实例变量,所有没有明确指明接收者的方法都在self上调用。一旦代码转而调用其他对象的方法,这个对象就成为了self。
class MyClass def testing_self @var = 10 #self的一个实例变量 my_method() #与self.my_method()相同 self end def my_method @var = @var + 1 end end
obj = MyClass.new obj.testing_self # => #<MyClass:0x007f93ab08a728 @var=11>
调用testing_self方法时,接收者obj就成为self。因此,实例变量@var就是obj 的实例变量,而且my_method方法也在obj上被调用。在my_method方法执行期间,self还是obj,因此@var还是obj对象的实例变量。最后,testing_self方法返回self的引用(@var=11)
相关推荐
Ruby元编程第二版,中文影印版,便于英文不好的同学们学习
ruby元编程.pdf ruby 元编程 这本书对ruby的调用原理做了非常精辟的分析。 ruby 元编程 这本书对ruby的元编程方式做了比较好的阐释。 ruby 元编程 这本书对结对编程有一个很好的提现。
ruby元编程 第2版 中文 目录清晰 方便广大通勤族路上看,如果喜欢请购买正版纸质图书
《Ruby元编程》PDF版本下载
Ruby元编程中文版
Ruby元编程pdf
ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开...
Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,
Ruby 一种面向对象程序设计的脚本语言 本书的第一部分“Ruby元编程”是本书的核心部分...本书的第二部分“Rails中的元编程”是一个元编程实例,Rail是Ruby标志性框架。 在阅读本书之前,需要了解本书的三个附录 A、B、C
《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开列出发挥其优势的...
《Ruby元编程》以案例形式循序渐进地介绍了Ruby特有的实用编程技巧 元编程 通过分析案例 讲解例题 回顾Ruby代码库的实现细节 《Ruby元编程》作者Paolo Perrotta不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题...
Ruby元编程 书籍配套源代码 Metaprogramming Ruby source code
Ruby编程语言中文版,涵盖Ruby 1.8和Ruby 1.9
本书是它的第2版,其中包括超过200页的新内容,以及对原有内容的修订,涵盖了Ruby 1.8中新的和改进的特性以及标准库模块。它不仅是您学习Ruby语言及其丰富特性的一本优秀教程,也可以作为日常编程时类和模块的参考...
Metaprogramming Ruby 2nd Edition ruby元编程
Ruby 元编程 中文 高清扫描版, 完整中文版
2. 动态性:Ruby是一门动态性极强的编程语言,允许开发人员在运行时通过元编程(metaprogramming)来修改和扩展代码的行为。这种动态性使得Ruby具有很大的灵活性,可以应对各种需求和场景。 3. 面向对象编程:Ruby...
元编程:编写可以编写代码的代码,ruby和rails的技术核心