`

ruby 元编程 类的真相

 
阅读更多

看如下的代码

class D
 def my_methond
   @v = 'demo'
 end
end

d = D.new
puts d.class
puts d.instance_variables #puts nothing

d.my_methond
puts d.instance_variables #puts @v

 让我们思考对象中有什么?

 在调用  my_methond之前,实例里什么都没有,在调用my_methond之后,实例里有了实例变量。

所以,在ruby中,对象的类和他的实例变量没有任何关系,当给实例变量赋值的时候,他们就生成。因此对于同一个类,你可以创建具有不同实例变量的对象。你可以把ruby中的实例变量理解为哈希表中的键值,每一个对象的键值都可能不同。

我们觉得对象中还有方法,实际上对象中并没有方法。在对象的内部仅仅包含了赋值的实例变量和对自身类的引用。实例方法真正存在的地方在类中。这也就是为什么同一个类的对象共享同样的方法而不共享同样的实例变量。

 

总结:一个对象的实例变量存在于对象的自身,而一个对象的方法存在于对象自身的类。

分享到:
评论

相关推荐

    Ruby元编程第二版中文

    Ruby元编程第二版,中文影印版,便于英文不好的同学们学习

    ruby元编程.pdf

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

    Ruby元编程pdf

    Ruby元编程pdf

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

    《Ruby元编程》PDF版本下载

    Ruby元编程-中文

    《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开列出发挥其优势的...

    Ruby元编程中文版

    Ruby元编程中文版

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

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

    Ruby编程,Ruby编程,

    Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,

    Ruby 元编程

    本书的第一部分“Ruby元编程”是本书的核心部分,他讲述了一个资深程序员在办公室一周发生的事情。 本书的第二部分“Rails中的元编程”是一个元编程实例,Rail是Ruby标志性框架。 在阅读本书之前,需要了解本书的三...

    ruby元编程

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

    Ruby元编程 源代码 Metaprogramming Ruby source code

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

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

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

    Metaprogramming Ruby 2nd Edition ruby元编程

    Metaprogramming Ruby 2nd Edition ruby元编程

    元编程 Ruby

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

    Ruby元编程【英文版】

    《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开列出发挥其优势的...

    Ruby 元编程.pdf

    Ruby 元编程,不错的书,就是有点难懂

    Ruby 元编程 中文 高清扫描版

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

    Ruby编程语言pdf

    在对Ruby进行了简要的综述之后,本书详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。 本书还包含对Ruby平台上...

    Ruby动态编程语言v2.6.3

    Ruby是一种跨平台、面向对象的动态类型编程语言。Ruby 体现了表达的一致性和简单性,它不仅是一门编程语言,更是表达想法的一种简练方式。 Ruby 是一个注重均衡的语言,它的发明者松本行弘(Yukihiro “Matz” ...

Global site tag (gtag.js) - Google Analytics