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类是一个Ru
超级会员免费看
订阅专栏 解锁全文
12

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



