我正在写一个Ruby 1.9的C扩展,我想要做的红宝石以下:如何在Ruby 1.9 C扩展中将块转换为Proc?
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
现在有了这个问题是关于C的方法,我只是“接收”的块,并且,据我所知,这甚至不是一个参数:我只需要拨打rb_yield
即可。
所以我的问题是:是否有一种Ruby 1.9 C扩展的方法,将块转换为proc或某些东西,所以我可以将它存储在模块中,并在需要/需要时再调用它?就像异步回调一样!
我已经用Procs/lambdas实现了这一点,但直接使用块语法只是丑陋而已。
你见过[this](http://banisterfiend.wordpress.com/2008/09/25/metaprogramming-in-the-ruby-c-api-part-one-blocks/)文章(尤其是“显式的块“段)?它可能已过时,但看起来像你所需要的。 – 2012-01-17 23:04:07
对不起,我不能回答你的问题,因为我不知道C也没有YARV C API,但是作为对其他读者的一个澄清,你的问题基本上是:“我怎么做'def on(&blk)end'来自C“,对吗? – 2012-01-18 01:42:11