在"The Well Grounded Rubyist"(摘录)一书中,David Black谈到了"Class/Object Chicken-and-Egg Paradox".我很难理解整个概念.
有人可以用更好/更容易/类比/其他术语来解释它吗?
引用(强调我的):
这个类
Class本身就是一个例子; 也就是说,它是一个Class对象.而且还有更多.还记得上课Object吗?嗯,Object是一个类...但类是对象.所以,Object是一个对象.而且Class是一堂课.并且Object是一个类,并且Class是一个对象.哪个先来?
Class除非该类Object已存在,否则如何创建该类?但是,如果有一个类可以有实例,那么怎么会有一个类Object(或任何其他类)Class呢?处理这个悖论的最好方法,至少就目前来说,是忽略它.为了让类和对象系统运行起来,Ruby必须做一些鸡蛋或鸡蛋的东西 - 然后,循环和悖论并不重要.在编程过程中,您只需要知道类是对象,被调用类的实例
Class.(如果你想简要地知道它是如何工作的,就像这样:每个对象都有一个内部记录,它是一个实例的类,并且对象内部的记录
Class指向它Class.)
Phr*_*ogz 13
您可以在此图中看到问题:
Ruby方法查找流程http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png
所有对象实例都继承自Object.所有类都是对象,并且Class是一个类,因此Class是一个对象.但是,对象实例从它们的类继承,并且Object是该类的实例Class,因此Object它本身从中获取方法Class.
然而,正如您在图中所看到的,没有循环查找循环,因为每个类有两个不同的继承"部分":实例方法和"类"方法.最后,查找路径是理智的.
注意:这个图反映了Ruby 1.8,因此不包括BasicObjectRuby 1.9中引入的核心类.
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |