Rubykoans about_hashes.rb

时间:2012-05-24 15:50:59

标签: ruby

  

可能重复:
  How does shovel (<<) operator work in Ruby Hashes?

努力寻找有关其原因的文档:

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”。我已经纠正了它以便通过测试,但我不知道为什么它以这种方式运行。有人可以指出我缺少的东西或指导我关于这个特定方面的相关文档。感谢。

2 个答案:

答案 0 :(得分:3)

没有:one键,以及:two键。尝试访问任何这些键下的值会返回一个默认值,即数组,即您在Hash中初始化Hash.new([])的值。

答案 1 :(得分:0)

  

我原本以为“uno”会分配给hash [:one]键,hash [:two]会收到“dos”

未分配(=),将它们(<<)推送到hash[:one]