私は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/)の記事(特に「明示的ブロック "段落)?それは時代遅れかもしれないが、そうでなければあなたが必要とするもののように見える。 –
申し訳ありませんが、私はCやYARV C APIを知らないので、私はあなたの質問に答えることができませんが、他の読者への説明として、あなたの質問は基本的には: "def on(&blk)end' Cから "、右? –