c - 如何将用 C 编写的块传递给 Ruby 的 rb_mod_refine?
问题描述
也许更一般地说,你如何将一个用 C 编写的块传递给另一个接受块的 C 函数?我知道我可以做这样的事情:
VALUE refine_foobar(VALUE block_arg, VALUE data, int argc, VALUE* argv) {
// block code here
return Qnil;
}
void Init_mything() {
VALUE mod = rb_define_module("Foobar");
rb_block_call(mod, rb_intern("refine"), 0, NULL, refine_foobar, Qnil);
}
但我觉得必须有一种方法可以rb_mod_refine
直接调用而不是通过rb_block_call
.
有任何想法吗?谢谢!
解决方案
在当前使用中,对模块进行了改进。它就在方法的名称中。
AFAIK,它不直接与块一起使用。
我能看到这个工作的唯一方法是在模块中创建一个“C”方法,然后使用 ruby 代码以传统方式将该模块应用为改进。
推荐阅读
- django - 如何在 Heroku 中执行 redis-server.exe?
- mysql - 如何在 mysql 中创建具有案例逻辑的函数?
- azure-active-directory - 我可以使用 Graph API 代表来宾用户创建 Microsoft Teams 在线会议吗?
- python-3.x - Selenium 滚动元素,页面内
- magento-1.9 - 更改状态取决于吨子产品 magento 1.9
- python - 如何从 Python 脚本中获取返回类型
- c++ - 比较二进制数输入的字符时,在抛出 'std::out_of_range 的实例后调用终止
- python - django 按列计算行数
- javascript - Dexie 在保存到 indexeddb 时可以尊重 js 类 getter/setter 吗?
- html - 如何修复文本