Quelqu'un peut-il expliquer la différence entre l'accès à un attribut d'instance via self.attribute
et par @attribute
?
self.attribute
Appelle la méthode attribute
.self.attribute = value
Appelle la méthode attribute=
Avec l'argument value
.@attribute
Et @attribute = value
Récupèrent/définissent la valeur de la variable d'instance @attribute
.
Donc, fondamentalement, ce sont deux choses entièrement différentes.
Cependant, si vous appelez attr_accessor :attribute
, Il définit la méthode attribute
pour renvoyer @attribute
Et la méthode attribute=(value)
pour définir @attribute = value
. Donc, dans ce cas, il n'y a pas de différence.
"Accéder directement à la variable d'instance est environ deux fois plus rapide que d'y accéder avec les méthodes d'accesseur"
Découvrez: http://greyblake.com/blog/2012/09/02/Ruby-perfomance-tricks/