我正在完成The Well Grounded Rubyist,我注意到一些我不太瞭解的實例變量調用。直接從TWGR(第15.2.2節):Ruby實例變量語法
class Person
attr_reader :name
def name=(name)
@name = name
normalize_name
end
private
def normalize_name
name.gsub!(/[^-a-z'.\s]/i, "")
end
end
是在normalize_name方法name
變量的隱式實例變量? @name.gsub!(/[^-a-z'.\s]/i, "")
也能工作嗎?有一些我應該知道的約定嗎?
直接引用'@ name'變量而不是'name'方法有效嗎?使用'name'方法有什麼好處嗎? – rringler 2012-03-17 03:52:10
是的。他們做同樣的基本事情,但使用getter會更安全 - 如果後來決定在讀取而不是寫入時修改數據,該怎麼辦? – coreyward 2012-03-17 03:57:40
明白了。謝謝你的幫助! – rringler 2012-03-17 04:02:39