首先,請允許我介紹一個代碼示例:是否從attr_reader安全返回變量的別名?
class BankAccount
attr_reader :allowed_users
def initialize(allowed_users)
@allowed_users = allowed_users
end
end
所以大家都知道,我們可以調用創建BankAccount
實例。
我不希望有attr_writer
(假設改變allowed_user
陣列我想有一些PIN碼邏輯)
所以現在我不能叫b.allowed_users= %w(john annie)
,但我怎麼過可以調用b.allowed_users[1] = 'anie'
這將修改@allowed_users
陣列。
如何處理?這是attr_reader
應該如何工作,或者它是一種錯誤?
我知道有大約
def allowed_users
self.allowed_users.dup
end
與.freeze
方法解決方案,但什麼哪一個更有效?
括號在「**我不想有'attr_writer'(**」關閉?)使用正確的大寫字母打開時,很難閱讀。 – sawa 2014-10-12 12:24:17