【发布时间】:2013-02-17 22:32:44
【问题描述】:
您可以使用 splat 运算符解构数组。
def foo(arg1, arg2, arg3)
#...Do Stuff...
end
array = ['arg2', 'arg3']
foo('arg1', *array)
但是有没有办法为了选项类型的优点而破坏哈希?
def foo(arg1, opts)
#...Do Stuff with an opts hash...
end
opts = {hash2: 'bar', hash3: 'baz'}
foo('arg1', hash1: 'foo', *opts)
如果不是原生 ruby,Rails 是否添加了类似的东西?
目前我正在大致这样做
foo('arg1', opts.merge(hash1: 'foo'))
【问题讨论】:
-
如果你在谈论默认选项,是的
merge是要走的路。 -
你有什么理由颠倒订单而不是做
{hash1: 'foo'}.merge(opts)? -
@sawa 不是。就是自然产生的结果。