任何人都可以解釋通過self.attribute
和@attribute
訪問實例屬性之間的區別嗎?直接訪問實例變量與使用訪問器方法
77
A
回答
97
self.attribute
調用方法attribute
。
self.attribute = value
使用參數value
調用方法attribute=
。
@attribute
和@attribute = value
獲取/設置實例變量的值@attribute
。
所以基本上他們是兩個完全不同的東西。
但是如果你調用attr_accessor :attribute
它定義的方法attribute
返回@attribute
和方法attribute=(value)
設置@attribute = value
。所以在這種情況下,沒有區別。
1
「訪問實例變量是直接用比存取方法訪問它們快約兩倍」
時退房:http://greyblake.com/blog/2012/09/02/ruby-perfomance-tricks/
相關問題
- 1. 直接訪問實例變量
- 2. 將實例變量傳遞給實例方法與直接訪問它們?
- 3. 變量有權訪問實例方法
- 4. 從方法實例訪問此變量
- 5. 從方法訪問實例變量
- 6. 訪問實例變量
- 7. Ruby實例變量訪問
- 8. 訪問實例變量
- 9. 訪問實例變量
- 10. coffeescript訪問實例變量
- 11. Python - 實例變量訪問
- 12. Java訪問實例變量
- 13. 訪問類實例變量
- 14. 無法與擴展方法來訪問實例變量和λ
- 15. 訪問實例變量,而不是實例方法在Python
- 16. 無法訪問實例變量
- 17. 無法訪問實例變量
- 18. 如何直接訪問ivars與使用訪問器不同?
- 19. 實例變量「變量」類方法錯誤訪問
- 20. Objective-C實例變量訪問器方法
- 21. Python類,實例變量和訪問器方法
- 22. 從單例方法訪問實例變量
- 23. 實例化後可用的方法訪問Javascript本地變量?
- 24. 方法鏈接和訪問變量
- 25. 訪問方法和變量
- 26. 回調方法無法訪問成員變量或實例
- 27. 動態添加實例方法無法訪問類變量
- 28. Rspec私有方法無法訪問類實例變量?
- 29. ActiveModel :: Serializer實例變量在方法中無法訪問
- 30. Tk DSL無法訪問實例方法和變量?
需要注意的是,通常建議使用`self.`(除非你編寫getter/setter方法),即使你現在擁有`attr_accessor`。這可以保護您免受額外的重構工作和錯誤的影響,如果您稍後將訪問方法更改爲不僅僅是獲取/設置實例變量。 (或者如果其他人爲你的工作提供補丁或子類) – Phrogz 2011-01-09 15:03:30