尝试检查我的哈希中的内容但收到 "undefined method `&' for Hash" 错误

Trying to check for content in my Hash but getting "undefined method `&' for Hash" error

我正在 Ruby 关于 rails (5) 的申请。我试图简化这个块

if my_hash_data[:my_key_1]
  my_hash_data[:my_key_1][:my_key_2]
else
  ""
end

所以我写了

my_hash_data[:my_key_1]&[:my_key_2] || ""

但是这会导致

undefined method `&' for {:my_key_2=>"Y"}:Hash

错误。有没有其他方法可以减少我使用的行数?

是的,这就是你想要做的

my_hash_data[:my_key_1]&.[](:my_key_2) || ""

但我建议从 ruby 2.3 开始使用 dig

my_hash_data.dig(:my_key_1, :my_key_2) || ""

记住 h[:foo]h.[](:foo)

的语法糖

听起来您使用的可能是旧版本的 ruby,Hash 可能没有安全导航或挖掘方法,所以您可以试试

 my_hash_data[:my_key_1] ? my_hash_data[:my_key_1][:my_key_2] : ''