任何人都可以解释通过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. Ruby实例变量访问
- 4. Python - 实例变量访问
- 5. 访问类实例变量
- 6. Java访问实例变量
- 7. 访问实例变量
- 8. 访问实例变量
- 9. 实例变量“变量”类方法错误访问
- 10. Objective-C实例变量访问器方法
- 11. Python类,实例变量和访问器方法
- 12. 方法链接和访问变量
- 13. 访问方法和变量
- 14. 动态添加实例方法无法访问类变量
- 15. Tk DSL无法访问实例方法和变量?
- 16. Rspec私有方法无法访问类实例变量?
- 17. 直接访问get/post变量而不显式访问$ _GET/$ _POST
- 18. 类方法代码应该直接访问外部变量吗?
- 19. python:使用包含变量的名称访问实例变量
- 20. 使用Minitest访问控制器实例变量
- 21. Java访问摘要实例变量
- 22. Java实例变量可访问性
- 23. 访问模块实例变量
- 24. 从javascript访问实例变量
- 25. 访问实例变量的值scala
- 26. 在Ruby中访问实例变量
- 27. 广东话访问实例变量
- 28. 实例变量不可访问
- 29. Rails + Vue:访问实例变量
- 30. 访问父类实例变量
需要注意的是,通常建议使用`self.`(除非你编写getter/setter方法),即使你现在拥有`attr_accessor`。这可以保护您免受额外的重构工作和错误的影响,如果您稍后将访问方法更改为不仅仅是获取/设置实例变量。 (或者如果其他人为你的工作提供补丁或子类) – Phrogz 2011-01-09 15:03:30