Édité pour ajouter: Vos commentaires indiquent que vous voulez que l'élément 'a' soit un tableau de tableaux. Ici, il est:
h = Hash.new
h = {"a" => [["b","e"]]}
p h # => {"a"=>[["b", "e"]]}
h["a"] << ["d", "f"]
p h # => {"a"=>[["b", "e"], ["d", "f"]]}
Lors du diagnostic d'un problème, préfèrent p
-puts
. puts
peut masquer les détails importants. Ajoutons quelques appels au p
et voyons ce que nous découvrons. Oh, et je vais changer le nom du hachage de "p" en "h". Sinon, il y a trop de "p" autour.
h = Hash.new
La ligne ci-dessus est inutile. La ligne suivante assigne un tableau à "h", remplaçant cette assignation.
h = {"a" => ["b","e"]}
p h # => {"a"=>["b", "e"]}
p h["a"].size # 2
Tout est exactement comme il se doit, même h ["a"]. Size return 2. why?
p h["a"] # => ["b", "e"]
Parce que h ["a"] est un tableau avec deux éléments.
h["a"] << ["d", "f"]
p h # => {"a"=>["b", "e", ["d", "f"]]}
Voyez-vous ce qui s'est passé? <<
ajoute un seul élément à la fin d'un tableau, et cet élément unique est le tableau ["d", "f"]. Et voilà pourquoi:
p h["a"].size # => 3
Parce qu'il ya en effet trois éléments du tableau: les chaînes « b » et « e », et le tableau [ « d », « f »].
Si vous vouliez ajouter les éléments « d » et « f » au tableau, puis le faire avec +=
:
h = {"a" => ["b","e"]}
h["a"] += ["d", "f"]
p h # => {"a"=>["b", "e", "d", "f"]}
comment est une taille de 2 en ligne 3 incorrect? p ["a"] est un tableau, avec 2 éléments. que voudriez-vous que la taille soit, et pourquoi? – Pete
Je veux quelque chose comme '{" a "=> [[" b "," e "], [" d "," f "]]}' et la taille à 2. – BSingh