下面是一個完整的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