Rubykoans about_hashes.rb

Possible Duplicate:
How does shovel (<<) operator work in ruby Hashes?

Difficulté à trouver de la documentation sur pourquoi cela fonctionne comme il le fait:

1 def test_default_value_is_the_same_object
2    hash = Hash.new([])
3
4    hash[:one] << "uno"
5    hash[:two] << "dos"
6
7    assert_equal ["uno", "dos"], hash[:one]
8    assert_equal ["uno", "dos"], hash[:two]
9    assert_equal ["uno", "dos"], hash[:three]
10
11   assert_equal true, hash[:one].object_id == hash[:two].object_id
12 end

J'aurais pensé que "uno" serait assigné à la clé de hachage [: un] et que le hachage [: deux] recevrait "dos". Je l'ai corrigé pour qu'il passe les tests, mais je ne sais pas pourquoi il fonctionne de cette façon. Quelqu'un pourrait-il signaler ce qui me manque ou me diriger vers la documentation pertinente sur cet aspect particulier? Merci.

0

2 Réponses

Il n'y a pas de clé : one , ni de clé : two . Essayer d'accéder à la valeur sous l'une de ces clés renvoie une valeur par défaut, à savoir array, celle que vous avez initialisée avec Hash dans Hash.new ([]) .

0
ajouté

J'aurais pensé que "uno" serait assigné à la clé de hachage [: un] et que le hachage [: deux] recevrait "dos"

They are not assigned (=), they are pushed (<<) into hash[:one].

0
ajouté
Je viens de trouver ce lien stackoverflow.com/questions/9343680/… qui a tout expliqué, merci!
ajouté l'auteur Tom, source