Rubykoans about_hashes.rb

Possible Duplicate:
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”。我已经纠正它,以便它通过测试,但我不知道它为什么这样操作。有人可能指出我错过了什么,或者指示我有关这方面的相关文件。谢谢。

0
额外 编辑
意见: 1

2 答案

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

0
额外

我会认为“uno”会被分配给hash [:one]键,而hash [:two]会分配给“dos”

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

0
额外
我刚刚发现这个链接 stackoverflow.com/questions/9343680/… 说明了一切,谢谢!
额外 作者 Tom,