编辑为添加:您的评论表明您希望元素'a'是一个数组数组。那就是:
h = Hash.new
h = {"a" => [["b","e"]]}
p h # => {"a"=>[["b", "e"]]}
h["a"] << ["d", "f"]
p h # => {"a"=>[["b", "e"], ["d", "f"]]}
当诊断一个问题,宁愿p
到puts
。 puts
可以隐藏重要的细节。让我们添加几个电话到p
,看看我们发现了什么。哦,我会将散列的名称从“p”更改为“h”。否则,周围会出现太多“p”。
h = Hash.new
上面的行是不必要的。下一行将一个数组赋值给“h”,覆盖这个赋值。
h = {"a" => ["b","e"]}
p h # => {"a"=>["b", "e"]}
p h["a"].size # 2
一切都与它应该是一样的,甚至h [“a”]。size returns 2. why?
p h["a"] # => ["b", "e"]
因为H [ “一”]是具有两个元件的阵列。
h["a"] << ["d", "f"]
p h # => {"a"=>["b", "e", ["d", "f"]]}
您是否看到发生了什么? <<
将单个元素附加到数组的末尾,并且该单个元素是数组[[d“,”f“]]。这就是为什么:
p h["a"].size # => 3
因为确实在数组中三个元素:字符串“b”和“E”,和数组[“d”,“F”。
如果你的意思是元素“d”和“F”追加到数组,然后用+=
做到这一点:
h = {"a" => ["b","e"]}
h["a"] += ["d", "f"]
p h # => {"a"=>["b", "e", "d", "f"]}
是如何在3线的大小为2不正确的? p [“a”]是一个包含2个元素的数组。你想要的尺寸是什么,为什么? – Pete 2010-03-01 04:54:38
我想要类似'{“a”=> [[“b”,“e”],[“d”,“f”]]}'并且大小为2. – BSingh 2010-03-01 05:21:56