Ruby 开发:类型系统、扩展创建与解释器嵌入
1. Ruby 类型系统
1.1 内存分配宏
在 Ruby 开发中,有两个重要的内存分配宏:
- REALLOC_N( var, c-type, n )
:重新分配 n
个 c-type
类型的内存空间,并将结果赋值给指针变量 var
。
- ALLOCA_N( c-type, n )
:在栈上为 n
个 c-type
类型的对象分配内存,当调用 ALLOCA_N
的函数返回时,这些内存将自动释放。
1.2 鸭子类型
Ruby 采用鸭子类型,即较少依赖对象的类型(或类),而更多关注对象的能力。例如, Kernel.exec
方法的第一个参数可以是字符串或包含两个字符串的数组,但代码并不显式检查参数类型,而是调用 rb_check_array_type
方法进行处理。以下是 Kernel.exec
方法的实现代码:
VALUE
rb_f_exec(argc, argv)
int argc;
VALUE *argv;
{
VALUE prog = 0;
VALUE tmp;
if (argc == 0) {
rb_raise(rb_eArgError, "