努力寻找有关其原因的文档:
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 :(得分:3)
没有:one
键,以及:two
键。尝试访问任何这些键下的值会返回一个默认值,即数组,即您在Hash
中初始化Hash.new([])
的值。
答案 1 :(得分:0)
我原本以为“uno”会分配给hash [:one]键,hash [:two]会收到“dos”
未分配(=
),将它们(<<
)推送到hash[:one]
。