Я проходил учебник серии Ruby Koans, когда я встретил это в about_hashes.rb:
def test_default_value_is_the_same_object
hash = Hash.new([])
hash[:one] << "uno"
hash[:two] << "dos"
assert_equal ["uno", "dos"], hash[:one]
assert_equal ["uno", "dos"], hash[:two]
assert_equal ["uno", "dos"], hash[:three]
assert_equal true, hash[:one].object_id == hash[:two].object_id
end
Значения в assert_equals - это то, что ожидал учебник. Но я не мог понять, как существует разница между использованием оператора << и оператора =?
Я ожидал, что:
-
hash[:one]будет["uno"] -
hash[:two]будет["dos"] -
hash[:three]будет[]
Может кто-нибудь объяснить, почему мое ожидание было неправильным?