【发布时间】:2014-10-12 12:13:48
【问题描述】:
首先介绍一个代码示例:
class BankAccount
attr_reader :allowed_users
def initialize(allowed_users)
@allowed_users = allowed_users
end
end
众所周知,我们可以调用b = BankAccount.new %w( john alice ) 来创建BankAccount 实例。
我不想拥有attr_writer(假设要更改allowed_user数组我想要一些PIN码逻辑)
所以现在我不能调用b.allowed_users= %w( john annie ),但我怎么可以调用b.allowed_users[1] = 'anie',这将修改@allowed_users 数组。
如何处理? attr_reader 应该是这样工作的还是某种错误?
我知道.freeze 方法有解决方案,但是呢
def allowed_users
self.allowed_users.dup
end
哪一个更有效?
【问题讨论】:
-
在“我不想关闭
attr_writer(”处打开的括号在哪里?使用正确的大小写。很难阅读。