Совершил странное поведение и задумался, может ли кто-нибудь еще подтвердить то, что я вижу.
Предположим, вы создаете класс с переменной-членом и разрешаете его чтение с помощью attr_reader.
class TestClass
attr_reader :val
def initialize(value)
@val = value
end
end
Теперь, когда я делаю следующее, кажется, что изменяется значение @val, хотя я предоставил ему только права чтения.
test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val
Это возвращает
hello
hello world
Это просто результат некоторых тестов, которые я провел в irb, поэтому не уверен, всегда ли это так