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, "
超级会员免费看
订阅专栏 解锁全文
1万+

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



