我在Ruby 2.0脚本中有一个带有以下签名的方法:
def method(*args, **kwargs)
此脚本无法在Ruby 1.9中运行,因为**
语法是新的。有没有办法在保留Ruby 2.0行为的同时更改方法签名?理想情况下,我不想修改呼叫者。
请注意,1.9版本的Ruby核心中有一些方法可以接受可变数量的参数和其他选项,例如Kernel#system
。
答案 0 :(得分:1)
非常接近相同的行为,尽管您必须通过密钥访问kwargs
:
def method(*args)
kwargs = case args.last
when Hash then args.pop
else {}
end
# stuff here
# puts args
# puts kwargs
end