今天我尝试了以下代码片段,但我不明白为什么它们之间会得到不同的结果。据我所知,它们是相同的。
一使用默认值offHash
另一个片段在访问该键之前为该键创建一个空数组。
有谁明白发生了什么事吗? :)
# Hash default if the key doesn't have a value set is an empty Array
a = Hash.new([])
a[:key] << 2 # => [2]
p a # => {} nil
p a[:key] # => [2]
p a.keys # => []
p a.values # => []
# Explicitly add an array for all nodes before creating
b = Hash.new
b[:key] ||= []
b[:key] << 2 # => [2]
p b # => {:key=>[2]}
p b.keys # => [:key]
红宝石版本 1.8.7
也许这会有所帮助:
a = Hash.new { |hash, key| hash[key] = [] }
a[:key] << 2 # => [2]
a[:key] # => [2]
p a # => {:key=>[2]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)