11、Ruby中的对象、类、模块与方法查找机制

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对象,它还包含

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值