Ruby中首先出现的是什么';s对象模型?
我一直在读元编程Ruby,对象模型就像是鸡还是蛋的两难选择 在Ruby 1.8中,对象类是类的实例。模块的超类是对象,是类的实例。类的超类是Module,它是类的实例(自引用)。比如说上课;终点在某处被定义;SomeClass是类的实例,但其超类是Object。为什么类的实例将Object作为超类而不是nil 同样,若对象要存在,那个么类必须存在,但模块必须存在,但模块要存在,对象必须存在。这些类是如何创建的?Ruby中首先出现的是什么';s对象模型?,ruby,Ruby,我一直在读元编程Ruby,对象模型就像是鸡还是蛋的两难选择 在Ruby 1.8中,对象类是类的实例。模块的超类是对象,是类的实例。类的超类是Module,它是类的实例(自引用)。比如说上课;终点在某处被定义;SomeClass是类的实例,但其超类是Object。为什么类的实例将Object作为超类而不是nil 同样,若对象要存在,那个么类必须存在,但模块必须存在,但模块要存在,对象必须存在。这些类是如何创建的? 下面是一个完整的Ruby类图(适用于Ruby 1.8): 为了帮助您理解类图奇怪的
-
下面是一个完整的Ruby类图(适用于Ruby 1.8): 为了帮助您理解类图奇怪的、看似不可能的自反射性质,了解类指针和超类指针可以在C API中随时赋值是很有用的。也就是说,您可以创建一个对象(在C API中),并在创建之后决定类和超类指针指向什么 另外,要理解定义的顺序,请查看
中的Object.c
(Ruby 1.9中)Init_Object()
其中,
在Ruby中是rb\u cBasicObject
,basicbject
在Ruby中是rb\u cObject
,依此类推。您可以在Ruby黑客指南中找到更多细节:Object
特别是第04章:引导好的,那么首先创建对象(在1.8中),然后修改对象,这样对象#类就是类?rb_cBasicObject = boot_defclass("BasicObject", 0); rb_cObject = boot_defclass("Object", rb_cBasicObject); rb_cModule = boot_defclass("Module", rb_cObject); rb_cClass = boot_defclass("Class", rb_cModule); metaclass = rb_make_metaclass(rb_cBasicObject, rb_cClass); metaclass = rb_make_metaclass(rb_cObject, metaclass); metaclass = rb_make_metaclass(rb_cModule, metaclass); metaclass = rb_make_metaclass(rb_cClass, metaclass); boot_defmetametaclass(rb_cModule, metaclass); boot_defmetametaclass(rb_cObject, metaclass); boot_defmetametaclass(rb_cBasicObject, metaclass);