创建一个ruby方法,接受参数哈希并将它们添加到我的方法哈希中

时间:2014-05-21 14:08:51

标签: ruby-on-rails ruby

def n(options={a: 1, b: 2})
  ...
end

n(c: 3)
嘿伙计们。如何在不替换所有哈希的情况下将{c:3}对添加到我的方法哈希中?我希望在我的方法中接收选项= {a:1,b:2,c:3}。

3 个答案:

答案 0 :(得分:1)

def n(options={})
  options.merge!{a: 1, b: 2} 
  ...
end

n(c: 3)

答案 1 :(得分:1)

如果您希望能够覆盖您的选项,可以使用Hash#reverse_merge方法执行此操作:

def n(options = {})
  opts = options.reverse_merge(a: 1, b: 2)
  # ...
end

答案 2 :(得分:0)

或者,从Ruby 2.0开始,您可以使用double-splat运算符参数来捕获所有未指定的方法参数:

def n(options={a: 1, b: 2}, **extra)
  ...
end

n(c: 3)  # options={a: 1, b: 2}, extra = {c: 3}
n(options={a:11, b: 99}, c: 123)  # options={a: 11, b: 99}, extra = {c: 123}

但是,您需要合并/更新收到的哈希值才能将其全部合并到一起。