Я проходил учебник серии 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]
будет[]
Может кто-нибудь объяснить, почему мое ожидание было неправильным?