这:
[{a: 1, b: 2}, {a: 3, b: 4}].each do |a:, b:| p a end
在 Ruby 2.7 中引发以下警告
警告:不推荐使用最后一个参数作为关键字参数;也许 ** 应该添加到调用中
我知道这each
是将哈希传递给块,并且块现在接受|a:, b:|
命名参数但是,有没有办法在这种情况下正确解构哈希?
我不确定,但我认为这个想法可能是使用模式匹配进行哈希解构?例如:
{a: 1, b: 2}.tap do |args|
args in {a: a, b: b} # !!!
p a
end
然而,目前默认情况下,这将显示一个警告(可以禁用):
模式匹配是实验性的,在未来的 Ruby 版本中行为可能会改变!
如果您已经知道根据您的示例在每个 Hash 中有两个键,为什么不这样做呢?
[{a: 1, b: 2}, {a: 3, b: 4}].each do |h|
a, b = h.values
p a
end