C拡張からRuby 2.0.0のキーワード引数をどのように処理しますか?
バックグラウンド
def example(name: 'Bob' hat_color: 'red')
puts "#{name} has a #{hat_color} hat!"
end
example #=> "Bob has a red hat!"
example(name: 'Joe', hat_color: 'blue') #=> "Joe has a blue hat!"
キーワード引数 (上記のような) は、多数の異なる呼び出しシーケンスまたはオプションを持つメソッドを処理する場合に非常に役立ちます。私は C エクステンション (blit
私のプロジェクトでほとんどの OpenGL 描画を処理するメソッド) にそのようなメソッドを 1 つ持っており、そのメソッドで ruby からのキーワード引数をどのように処理するのか疑問に思っています。
アイデア
私が行ったいくつかの調査に基づいて、 C関数の:
オプションを介してそのような処理が行われる可能性があると思います。rb_scan_args
ただし、それを使用する方法に関する情報は見つかりませんでした。