2009-08-02 59 views

回答

10

类返回类(#type)而不是祖先。对象的类是Class。班级是班级。类是一个对象。广告真相:我从来没有学过Ruby,但Object-Class关系是30年前提出的Smalltalk。

+4

元类在Ruby中不同的工作:他们得到注入方法查找链,从而Ruby没有两个平行的层次结构类和元类,但是,正如你所说,基础是相同的。 – 2009-08-03 00:38:05

+0

@Jorg:谢谢。只要我完成我目前的项目,我会拿起铁轨和红宝石,我听到太多的赞美,我很感兴趣:) – 2009-08-03 01:34:37

5

这是它在Ruby 1.9的方式:

Class.class = Class 

Class.superclass = Module 
Module.class = class 
Module.superclass = Object 
Object.class = Class 
Object.superclass = BasicObject 
BasicObject.class = Class 
BasicObject.superclass = nil 
6

Object的类是Class(因为Object本身是一个类),以及ObjectClass的祖先。

有一个循环引用,它非常复杂。我个人的建议,如果你真的不需要玩,不要去那里。

9

类,对象,模块和所有其它类是实例一个类:)

Class.class == Module.class == Object.class == Hash.class ==类

类也是一个对象(如在系统中的任何其他对象),但它不是对象的直接例如,它是一个的实例衍生类(类在这种情况下)

Class.superclass.superclass ==对象(模块在中间)

对象本身也是一类。 Object.class ==类

类,模块和对象具有循环依赖关系,因为它们在OO模型的核心中。

Object.class.superclass.superclass ==对象

=> parent (.superclass) 
-> instance-of (.class) 

alt text http://www.grabup.com/uploads/b10b2ffa9976953e3d6f88e6fcbf6f28.png?direct