извините за этот вопрос noob ... допустим, у нас есть:
class TestMe
attr_reader :array
def initialize
@array = (1..10).to_a
end
end
тогда можно сделать:
>> a = TestMe.new
=> #<TestMe:0x00000005567228 @x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>
>> a.array.map! &:to_s
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
>> a.array
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
- это явно идет против инкапсуляции, не так ли?
- Есть ли способ быстро защитить переменную массива от изменения?
- ... или мне нужно реализовать глубокое копирование каждый раз, когда моя переменная экземпляра имеет "деструктивные" методы?
РЕДАКТИРОВАТЬ Я где-то читал, что "плохой ОО" - выставлять переменную экземпляра массива.Если это правда, почему?