ruby 3数组参数与关键字参数splat

p4rjhz4m  于 2023-01-25  发布在  Ruby
关注(0)|答案(1)|浏览(174)

在ruby 3之前,可以做类似这样的事情

def test a, **o
  p a, o
end
t = [:ok, **{ok: 2}]
test *t

它会恰当地分配
:确定到a和{确定:2}到o
在ruby 3中调用
你会得到

ArgumentError (wrong number of arguments (given 2, expected 1))

是否有解决方法来拆分在第二个位置保存关键字参数的数组参数?

093gszye

093gszye1#

如果您需要将第二个参数作为散列发送,则需要执行以下操作:

def test a, o
  p a, o
end
t = [:ok, {ok: 2}]
test *t

因为关键字和位置参数是分开的。

相关问题