这是attr_reader应该使用数组的方式吗?
class User
def initialize
@interests = []
end
attr_reader :interests
end
u = User.new
=> #User:0x1d2cb60
u.interests << "music"
=> ["music"]
u.interests[1] = "travelling"
=> ["travelling"]
u.interests = nil
NoMethodError: undefined method `interests=' for u:User
我只是检查我自己的解释是否正确,如果不正确,请纠正我:
attr_reader 是否没有阻止我分配“@interests”值,因为您没有直接修改实例变量本身(它仍然保存对数组对象的引用),但您只是在对该数组对象引用的值进行操作?
如果这是正确的,是否有一种快速而好的方法来避免 attr_reader 给我对数组值的写访问权限,但让我读取它们?
谢谢