2011-01-09 89 views

回答

97

self.attribute調用方法attribute
self.attribute = value使用參數value調用方法attribute=
@attribute@attribute = value獲取/設置實例變量的值@attribute

所以基本上他們是兩個完全不同的東西。

但是如果你調用attr_accessor :attribute它定義的方法attribute返回@attribute和方法attribute=(value)設置@attribute = value。所以在這種情況下,沒有區別。

+14

需要注意的是,通常建議使用`self.`(除非你編寫getter/setter方法),即使你現在擁有`attr_accessor`。這可以保護您免受額外的重構工作和錯誤的影響,如果您稍後將訪問方法更改爲不僅僅是獲取/設置實例變量。 (或者如果其他人爲你的工作提供補丁或子類) – Phrogz 2011-01-09 15:03:30