2012-05-24 31 views
2

可能重複:
How does shovel (<<) operator work in Ruby Hashes?Rubykoans about_hashes.rb

苦苦尋找的,爲什麼這個工作方式是這樣的文件:

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 

我本來以爲「uno」將被分配給hash [:one]鍵,而hash [:two]將被分配給「dos」。我已經糾正它,以便它通過測試,但我不知道它爲什麼這樣操作。有人可能指出我錯過了什麼,或者指示我有關這方面的相關文件。謝謝。

回答

0

我本來認爲 「UNO」 將被分配到hash:一個]鍵和散列[:二】將獲得 「DOS」

他們沒有被分配(=)他們被推(<<)到hash[:one]

+1

我剛剛發現這個鏈接http://stackoverflow.com/questions/9343680/how-does-shovel-operator-work-in-ruby-hashes解釋一切,謝謝! – Tom

3

有沒有:one鍵,以及:two鍵。在任何這些鍵下嘗試訪問值都會返回一個默認值,即數組,這是您初始化Hash並使用Hash.new([])的默認值。