谁能解释通过self.attribute
和通过访问实例属性之间的区别@attribute
?
Answers:
self.attribute
调用方法attribute
。以参数
self.attribute = value
调用方法。并获取/设置实例变量的值。attribute=
value
@attribute
@attribute = value
@attribute
因此,基本上,它们是完全不同的两件事。
但是,如果调用attr_accessor :attribute
它,则定义attribute
要返回@attribute
的方法和attribute=(value)
要设置的方法@attribute = value
。因此,在那种情况下,没有区别。
“直接访问实例变量比使用访问器方法访问实例变量快大约两倍”
查看以下网址:https : //www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
self.
即使您当前拥有,通常也建议使用(除非您正在编写getter / setter方法)attr_accessor
。如果您以后将访问器方法更改为不仅仅是获取/设置实例变量,还可以保护您免受其他重构工作和错误的侵害。(或者其他人对您的工作进行修补或子类化。)