Rubykoans about_hashes.rb

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

Se luptă să găsească documentația despre motivul pentru care funcționează așa cum o face:

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

Aș fi crezut că "uno" va fi atribuit tastei hash [: one] și hash [: two] ar primi "dos". Am corectat-o ​​astfel încât să treacă testul, dar nu știu de ce funcționează în acest fel. Ar putea cineva să indice ce lipsește sau să mă direcționez la o documentație relevantă cu privire la acest aspect particular. Mulțumiri.

0

2 răspunsuri

Nu există o cheie : una , precum și o cheie : two . Încercarea de a accesa valoarea sub oricare dintre aceste chei returnează o valoare implicită, adică matricea, cea pe care ați inițializat codul Hash în Hash.new ([]) .

0
adăugat

Aș fi crezut că "uno" ar fi atribuit tastei hash [: one] și hash [: two] ar primi "dos"

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

0
adăugat
Tocmai am găsit acest link stackoverflow.com/questions/9343680/… care a explicat totul, vă mulțumesc!
adăugat autor Tom, sursa