Question

J'écris une extension Ruby 1.9 C et je veux faire ce qui suit dans Ruby:

notifier = Notifier.new
notifier.on 'click' do
  puts "clicked!"
end

Maintenant, le problème avec cela est que sur la méthode C, je ne "reçois" qu'un bloc, et, pour autant que je sache, ce n'est même pas un paramètre: je peux juste appeler avec avec rb_yield.

Donc, ma question est: existe-t-il un moyen sur une extension Ruby 1.9 C, pour transformer un bloc en un proc ou quelque chose, afin que je puisse le stocker à l'intérieur de mon module, et l'appeler plus tard chaque fois que j'en veux / j'en ai besoin? Comme un rappel asynchrone!

J'ai déjà implémenté cela avec Procs / Lambdas, mais il est juste laid de ne pas utiliser directement la syntaxe de bloc.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top