如何将 Proc 转换为 Ruby C 扩展中的块?
我在 Ruby C 扩展中存储了一个过程数组,我需要遍历每个过程并对每个过程进行实例评估。 问题是instance_eval只接受块,而不接受过程。 这不是 Ruby 中的问题,我可以简单地解决这个问题:
proc_list.each { |my_proc|
@receiver.instance_eval(&my_proc)
}
但是我不确定如何使用 Ruby C API 来解决这个问题。
有谁知道我如何实现这一目标?
I am storing an array of procs in a Ruby C extension and I need to go through and instance_eval each proc. The problem is that instance_eval only accepts blocks, not procs. This is not an issue in Ruby where I can simply go:
proc_list.each { |my_proc|
@receiver.instance_eval(&my_proc)
}
However I am unsure how to go about this using the Ruby C API.
Does anyone have any ideas how I might accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从镐,p。 871(1.9版)
因此,将您的
Proc
对象作为arg2
传递,并定义一个(*block)()
函数,该函数仅将传递的值转发到Proc
的#call
方法。就像
我还没有测试过这段代码,但它与 这篇文章。
From the pickaxe, p. 871 (1.9 edition)
So pass your
Proc
objects asarg2
and define a(*block)()
function that just forwards the passed value to theProc
's#call
method.Something like
I haven't tested this code, but it's consistent with the caveats in this article.