編輯爲添加:您的評論表明您希望元素'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