下面是一个完整的Ruby类图(为Ruby 1.8):http://banisterfiend.wordpress.com/2008/11/25/a-complete-ruby-class-diagram/
为了帮助你理解类图是知道类指针和超类指针有用的怪看似不可能自我反省的性质可以随时在C API中分配。也就是说,您可以创建一个对象(在C API中)并且事后决定Class和Super类指针指向什么。
此外,了解定义的顺序,看Init_Object()
在object.c
(Ruby 1.9中)
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);
凡rb_cBasicObject
是红宝石BasicObject
,rb_cObject
是红宝石Object
,等等。
好了,对象是首次创建(1.8),然后在以后修改,使得对象#类是类? – Timothy 2010-05-18 18:48:10