Ruby 1.9中的splat和关键字args

时间:2014-06-23 16:17:30

标签: ruby

我在Ruby 2.0脚本中有一个带有以下签名的方法:

def method(*args, **kwargs)

此脚本无法在Ruby 1.9中运行,因为**语法是新的。有没有办法在保留Ruby 2.0行为的同时更改方法签名?理想情况下,我不想修改呼叫者。

请注意,1.9版本的Ruby核心中有一些方法可以接受可变数量的参数和其他选项,例如Kernel#system

1 个答案:

答案 0 :(得分:1)

非常接近相同的行为,尽管您必须通过密钥访问kwargs

def method(*args)
  kwargs = case args.last
  when Hash then args.pop
  else {}
  end
  # stuff here
  # puts args
  # puts kwargs
end