gaq*_*qzi 2 ruby hash default-value
今天我尝试了以下代码片段,我不明白为什么我们之间会得到不同的结果.据我所知,他们是一样的.
一个使用默认值off Hash,另一个代码段在访问之前为密钥创建一个空数组.
任何了解发生了什么的人?:)
# 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]
Run Code Online (Sandbox Code Playgroud)
Ruby版本1.8.7
也许这会有所帮助:
a = Hash.new { |hash, key| hash[key] = [] }
a[:key] << 2 # => [2]
a[:key] # => [2]
p a # => {:key=>[2]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |