如何使用新的哈希语法?

时间:2019-07-17 08:03:29

标签: ruby hash

我正在尝试使用新的哈希语法,但是它不起作用。我在做什么错了?

2.6.3 :151 > hash = { duplex: duplex}
 => {:duplex=>[#<Nokogiri::XML::Element:0x1e8ee04 name="duplex"....
2.6.3 :152 > hash["duplex"]
 => nil 
2.6.3 :153 > hash = { "duplex" => duplex}
 => {"duplex"=>[#<Nokogiri::XML::Element:0x1e8ee04 name="duplex" ....
2.6.3 :154 > hash["duplex"]
 => [#<Nokogiri::XML::Element:0x1e8ee04 name="duplex" ....

2 个答案:

答案 0 :(得分:2)

“新”哈希语法用于用符号(:key)而不是字符串('key'"key")索引哈希。因此,根据您的情况,使用:

> hash = { duplex: duplex}
> hash[:duplex]
[#<Nokogiri::XML::Element:0x1e8ee04 name="duplex"...

答案 1 :(得分:2)

您还可以使用ActiveSupport :: HashWithIndifferentAccess转换哈希,以便它支持两种密钥类型。或Hashie :: Mash也可以使它们作为方法起作用。

hash = Hashie::Mash.new({ duplex: duplex}) # or Hashie::Mash.new({ "duplex" => duplex }), it doesn't matter
hash[:duplex]
hash['duplex'] # same
hash.duplex # same