我正在尝试使用新的哈希语法,但是它不起作用。我在做什么错了?
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" ....
答案 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