如何处理来自 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 绘图的方法),我想知道如何让该方法处理来自 ruby 的关键字参数。
想法
根据我所做的一些研究,我认为这种处理可以通过C 函数:
上的选项来完成。rb_scan_args
但是,我一直无法找到有关如何使用它的任何信息。