gpt4 book ai didi

c - 如何将用 C 编写的 block 传递给 Ruby 的 rb_mod_refine?

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:53 26 4
gpt4 key购买 nike

也许更一般地说,如何将用 C 编写的 block 传递给另一个接受 block 的 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

有什么想法吗?谢谢!

最佳答案

在当前的使用中,改进应用于模块。它就在方法的名称中。

据我所知,它不能直接与 block 一起使用。

我能看到这个工作的唯一方法是在模块中创建一个“C”方法,然后使用 ruby​​ 代码以常规方式将该模块作为改进应用。

关于c - 如何将用 C 编写的 block 传递给 Ruby 的 rb_mod_refine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55539185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com