【发布时间】:2012-02-12 17:50:50
【问题描述】:
我正在编写一个 Ruby 1.9 C 扩展,我想在 ruby 中执行以下操作:
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
现在的问题是,在 C 方法上,我只“接收”一个块,据我所知,它甚至不是参数:我可以用 rb_yield 调用。
所以我的问题是:Ruby 1.9 C 扩展有没有办法将块转换为 proc 或其他东西,所以我可以将它存储在我的模块中,并在以后需要时调用它?就像一个异步回调!
我已经用 Procs/lambdas 实现了这个,但是不直接使用块语法实在是太丑了。
【问题讨论】:
-
你看过this的文章(尤其是“显式块”段落)吗?它可能已经过时,但它看起来就像您需要的一样。
-
对不起,我无法回答你的问题,因为我不知道 C 和 YARV C API,但作为对其他读者的澄清,你的问题基本上是:“我该怎么做@ 987654324@来自C",对吧?
标签: c ruby block ruby-1.9 ruby-c-extension