首页 > 解决方案 > 在 Ruby 2.7 中解构块参数中的哈希

问题描述

这:

[{a: 1, b: 2}, {a: 3, b: 4}].each do |a:, b:| p a end

在 Ruby 2.7 中引发以下警告

警告:不推荐使用最后一个参数作为关键字参数;也许 ** 应该添加到调用中

我知道这each是将哈希传递给块,并且块现在接受|a:, b:|命名参数但是,有没有办法在这种情况下正确解构哈希?

标签: rubyruby-2.7

解决方案


我不确定,但我认为这个想法可能是使用模式匹配进行哈希解构?例如:

{a: 1, b: 2}.tap do |args|
  args in {a: a, b: b} # !!!
  p a
end

然而,目前默认情况下,这将显示一个警告(可以禁用):

模式匹配是实验性的,在未来的 Ruby 版本中行为可能会改变!


推荐阅读