Я пишу расширение Ruby 1.9 C, и я хочу сделать следующее в ruby:
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
Теперь проблема в том, что на метод C, я только "получаю" блок, и, насколько мне известно, это даже не параметр: я просто могу вызвать with с помощью rb_yield
.
Итак, мой вопрос: есть ли способ в расширении Ruby 1.9 C преобразовать блок в процесс или что-то в этом роде, чтобы я мог сохранить его внутри своего модуля и вызывать его позже, когда они мне понадобятся / понадобятся? Как асинхронный обратный вызов!
Я уже реализовал это с помощью Procs / lambdas, но просто уродливо не использовать синтаксис блока напрямую.