Ruby 新手入門隨手記 attr_reader 、 attr_writer 、 attr_accessor?
還記得第一次看到 attr_accessor :cat 其實等於
再次的見識到 ruby 的強大啊!
一行抵六行!
等等…那個 cat= (cat) 等於不把它分開嗎?
答案是不行!!
當下真的是滿臉黑人問號
在了解之前要先有個觀念
在 ruby 裡面其實『方法可以覆寫』!
在這例子裡面偷偷的把 new 方法偷偷的覆寫掉了
導致每次執行 Cat.new 的時候 @count 都會+1
Ruby在跑程式碼的時候會先看自己的class有沒有實作method
沒有的話就往上找,有的話就用自己的( new
到這裡就有點了解為什麼上面的cat= 不能分開了
其實他在偷偷做一些事情
讓我們實際做一次
不要=了,改成cat會怎樣呢?
當你在 doraemon.cat = 3 的時候
看起來像是在做賦值的動作
其實是在呼叫『cat= (cat)』這個 method,並且把『3』這個參數丟給他
再回來主題
其實 attr_reader 在做這件事
attr_accessor
則是reader
跟writer
兼具
至於什麼時候該用哪個就要看你的程式要做什麼功能了