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