我正在编写一个 Ruby 1.9 C 扩展,我想在 ruby 中执行以下操作:
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
现在的问题是,在 C 方法上,我只“接收”一个块,据我所知,它甚至不是一个参数:我只能用 with 调用rb_yield
。
所以我的问题是:Ruby 1.9 C 扩展上有没有办法将块转换为 proc 或其他东西,所以我可以将它存储在我的模块中,并在以后需要时调用它?就像一个异步回调!
我已经用 Procs/lambdas 实现了这个,但是不直接使用块语法实在是太丑了。