Kann jemand den Unterschied zwischen dem Zugriff auf ein Instanzattribut über self.attribute
und durch erklären @attribute
?
Kann jemand den Unterschied zwischen dem Zugriff auf ein Instanzattribut über self.attribute
und durch erklären @attribute
?
Antworten:
self.attribute
ruft die Methode auf attribute
.
self.attribute = value
ruft die Methode attribute=
mit dem Argument auf value
.
@attribute
und @attribute = value
den Wert der Instanzvariablen abrufen / festlegen @attribute
.
Im Grunde sind es also zwei völlig verschiedene Dinge.
Wenn Sie jedoch nennen attr_accessor :attribute
es definiert die Methode attribute
zurück @attribute
und das Verfahren attribute=(value)
zum Set @attribute = value
. In diesem Fall gibt es also keinen Unterschied.
"Der direkte Zugriff auf Instanzvariablen ist etwa doppelt so schnell wie der Zugriff mit Zugriffsmethoden."
Überprüfen Sie die: https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
self.
(sofern Sie die Getter / Setter - Methode gerade schreiben) , auch wenn Sie derzeit habenattr_accessor
. Dies schützt Sie vor zusätzlichen Refactor-Arbeiten und Fehlern, wenn Sie später die Accessor-Methode (n) ändern, um mehr zu tun als nur die Instanzvariable abzurufen / festzulegen. (Oder wenn jemand anderes Ihre Arbeit