【发布时间】:2011-06-06 01:44:50
【问题描述】:
谁能解释通过self.attribute 和@attribute 访问实例属性的区别?
【问题讨论】:
标签: ruby instance-variables accessor
谁能解释通过self.attribute 和@attribute 访问实例属性的区别?
【问题讨论】:
标签: ruby instance-variables accessor
self.attribute 调用方法attribute。self.attribute = value 使用参数value 调用方法attribute=。@attribute 和@attribute = value 获取/设置实例的值变量@attribute。
所以基本上它们是两个完全不同的东西。
但是,如果您调用 attr_accessor :attribute,它会定义方法 attribute 以返回 @attribute,并定义方法 attribute=(value) 以设置 @attribute = value。所以在那种情况下,没有区别。
【讨论】:
attr_accessor,通常也建议使用self.(除非您正在编写getter/setter方法)。如果您稍后更改访问器方法以执行更多操作而不仅仅是获取/设置实例变量,这可以保护您免受额外的重构工作和错误。 (或者如果其他人对您的工作进行了修补或子类化。)
“直接访问实例变量比使用访问器方法访问它们快两倍”
查看:https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
【讨论】: