在用 C 语言编写 ruby 扩展时,我有兴趣遵循正确的命名约定。具体来说,我指的是添加_p
到谓词的函数名称和m
为模块、c
类等添加前缀的变量。
例如,如果我们想在 C 中定义如下的谓词方法,我们应该_p
在定义该方法的函数中使用它作为后缀。
class MyClass
def awesome?
true
end
end
在 C 中:
static VALUE my_extension_my_class_awesome_p(VALUE self) {
return Qtrue;
}
void Init_my_extension(void) {
VALUE cMyClass = rb_define_class("MyClass", rb_cObject);
rb_define_method(cMyClass,
"awesome?",
my_extension_my_class_awesome_p,
0);
}
查看核心 Ruby 源代码,我看到_p
(predicate) 和的后缀_m
,我无法从中推断出含义。我敢肯定还有许多其他约定。
还有其他命名约定,例如何时使用下划线以及何时使用驼峰式大小写。在编写包含大量 C 代码的扩展时,如果没有可遵循的指导方针,很容易造成混乱。
某处有明确的清单吗?在搜索 Ruby C 扩展主题时,我似乎从未找到有用的结果。任何显示纯 Ruby 语法和正确命名的等效 C 函数的快速示例?