我正在向哈希键添加项目.我期待得到这样的结构:
{
'a' : [1],
'b' : [2, 3, 4]
}
Run Code Online (Sandbox Code Playgroud)
我使用Array来初始化Hash.
irb> hash = Hash.new([])
=> {}
Run Code Online (Sandbox Code Playgroud)
然后开始使用它:
irb> hash['a'] << 1
=> [1]
irb> hash['b'] << 2
=> [1, 2]
Run Code Online (Sandbox Code Playgroud)
但事实证明:
irb> hash
=> {}
Run Code Online (Sandbox Code Playgroud)
Mar*_*une 11
请尝试以下方法:
hash = Hash.new{|h, k| h[k] = []}
hash['a'] << 1 # => [1]
hash['b'] << 2 # => [2]
Run Code Online (Sandbox Code Playgroud)
您获得意外结果的原因是您将空数组指定为默认值,但使用了相同的数组; 没有复制.正确的方法是使用新的空数组初始化值,就像在我的代码中一样.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |