在 ruby 3 之前,可以这样做
def test a, **o
p a, o
end
t = [:ok, **{ok: 2}]
test *t
Run Code Online (Sandbox Code Playgroud)
它会正确分配
:ok 到 a 和 {ok: 2} 到 o
在 ruby 3 中调用
你会得到
ArgumentError (wrong number of arguments (given 2, expected 1))
Run Code Online (Sandbox Code Playgroud)
是否可以解决将关键字参数保留在第二个位置的 splat 数组参数?
如果您需要将第二个参数作为哈希发送,您需要执行以下操作:
def test a, o
p a, o
end
t = [:ok, {ok: 2}]
test *t
Run Code Online (Sandbox Code Playgroud)
因为分隔关键字和位置参数。
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |