def n(options={a: 1, b: 2})
...
end
n(c: 3)
嘿伙计们。如何在不替换所有哈希的情况下将{c:3}对添加到我的方法哈希中?我希望在我的方法中接收选项= {a:1,b:2,c: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}
但是,您需要合并/更新收到的哈希值才能将其全部合并到一起。