`
任清宇
  • 浏览: 20518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby 元编程 第二版随笔(三)

    博客分类:
  • ruby
阅读更多

 

   执行方法

   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元编程第二版,中文影印版,便于英文不好的同学们学习

    ruby元编程.pdf

    ruby元编程.pdf ruby 元编程 这本书对ruby的调用原理做了非常精辟的分析。 ruby 元编程 这本书对ruby的元编程方式做了比较好的阐释。 ruby 元编程 这本书对结对编程有一个很好的提现。

    Ruby元编程 第2版 中文 佩罗塔著 2015.08

    ruby元编程 第2版 中文 目录清晰 方便广大通勤族路上看,如果喜欢请购买正版纸质图书

    《Ruby元编程》PDF版本下载.txt

    《Ruby元编程》PDF版本下载

    Ruby元编程中文版

    Ruby元编程中文版

    Ruby元编程pdf

    Ruby元编程pdf

    Ruby元编程-中文

    ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾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特有的实用编程技巧 元编程 通过分析案例 讲解例题 回顾Ruby代码库的实现细节 《Ruby元编程》作者Paolo Perrotta不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    Ruby元编程 书籍配套源代码 Metaprogramming Ruby source code

    Ruby编程语言中文版

    Ruby编程语言中文版,涵盖Ruby 1.8和Ruby 1.9

    Programming Ruby中文版(第二版)

    本书是它的第2版,其中包括超过200页的新内容,以及对原有内容的修订,涵盖了Ruby 1.8中新的和改进的特性以及标准库模块。它不仅是您学习Ruby语言及其丰富特性的一本优秀教程,也可以作为日常编程时类和模块的参考...

    Metaprogramming Ruby 2nd Edition ruby元编程

    Metaprogramming Ruby 2nd Edition ruby元编程

    Ruby 元编程 中文 高清扫描版

    Ruby 元编程 中文 高清扫描版, 完整中文版

    Ruby动态编程对象编程Ruby动态编程对象编程Ruby动态编程对象编程

    2. 动态性:Ruby是一门动态性极强的编程语言,允许开发人员在运行时通过元编程(metaprogramming)来修改和扩展代码的行为。这种动态性使得Ruby具有很大的灵活性,可以应对各种需求和场景。 3. 面向对象编程:Ruby...

    元编程 Ruby

    元编程:编写可以编写代码的代码,ruby和rails的技术核心

Global site tag (gtag.js) - Google Analytics