Ruby中的对象、类、模块与方法查找机制
1. Ruby对象与类的内部表示
在Ruby中,对象和类有着独特的内部表示方式。Ruby使用 RObject 结构来表示自定义类的实例以及一些预定义类的实例。 RObject 结构非常简单,它包含一个指向对象类的指针、一个实例变量值的表以及变量的数量。基于此,我们可以对Ruby对象下一个简单的定义:每个Ruby对象都是类指针和实例变量数组的组合。
这个定义十分强大且实用,因为在Ruby中一切皆对象。无论在程序中使用何种值,它都是一个对象,都有类指针和实例变量。
同时,Ruby使用特殊的C结构来表示许多常用的内置类的实例,这些被称为“通用”对象。例如,使用 RString 结构表示 String 类的实例, RArray 表示 Array 类的实例, RRegexp 表示 Regexp 类的实例。尽管这些结构各不相同,但每个通用对象同样保存了类指针和实例变量数组。此外,对于一些简单的值,如小整数和符号,Ruby并不使用C结构来保存,而是直接将这些值存储在原本指向保存该值的结构的 VALUE 指针中。
Ruby类的情况则相对复杂。 RClass 结构与 rb_classext_struct 结构协同工作,保存了大量信息。因此,我们对Ruby类的定义更为复杂:一个Ruby类是一个Ruby对象,它还包含
超级会员免费看
订阅专栏 解锁全文
882

被折叠的 条评论
为什么被折叠?



