¿Alguien puede explicar la diferencia entre acceder a un atributo de instancia a través self.attributey por @attribute?
Respuestas:
self.attributellama al método attribute.
self.attribute = valuellama al método attribute=con el argumento value.
@attributey @attribute = valueobtenga / establezca el valor de la variable de instancia @attribute.
Entonces, básicamente, son dos cosas completamente diferentes.
Sin embargo, si lo llama attr_accessor :attribute, define el método attributea devolver @attributey el método attribute=(value)a establecer @attribute = value. Entonces, en ese caso, no hay diferencia.
"Acceder directamente a la variable de instancia es aproximadamente dos veces más rápido que acceder a ellas con métodos de acceso"
Visite: https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
self.(a menos que esté escribiendo el método getter / setter) incluso si actualmente tieneattr_accessor. Esto lo protege de errores y trabajos de refactorización adicionales si luego cambia los métodos de acceso para hacer algo más que obtener / establecer la variable de instancia. (O si alguien más parchea o subclasifica su trabajo.)