¿Alguien puede explicar la diferencia entre acceder a un atributo de instancia a través de self.attribute
y por @attribute
?Acceso directo a una variable de instancia vs. Uso de un método de acceso
77
A
Respuesta
97
self.attribute
llama al método attribute
.
self.attribute = value
llama al método attribute=
con el argumento value
.
@attribute
y @attribute = value
obtener/establecer el valor de la variable de instancia @attribute
.
Así que básicamente son dos cosas completamente diferentes.
Sin embargo, si se llama a attr_accessor :attribute
que define el método para volver attribute
@attribute
y el método para establecer attribute=(value)
@attribute = value
. Entonces en ese caso, no hay diferencia.
1
"Acceso a variable de instancia es directamente alrededor de dos veces más rápido que acceder a ellos con métodos de acceso"
Mira la: http://greyblake.com/blog/2012/09/02/ruby-perfomance-tricks/
Cuestiones relacionadas
- 1. los punteros de C vs acceso miembro directo de estructuras
- 2. de acceso directo para iniciar una actividad
- 3. ReSharper acceso directo string.format
- 4. Acceso de cliente directo SimpleDB
- 5. base de datos de acceso directo vs servicio web
- 6. cómo detectar cuando una tecla de acceso directo (tecla de acceso directo) se presiona
- 7. Teclas de acceso directo Resharper
- 8. Variable de instancia de clase principal de acceso
- 9. Teclas de acceso directo a nivel de aplicación en WPF
- 10. Acceso a una variable entera copiada en javascript método anónimo
- 11. (htaccess) ¿Cómo prevenir un archivo de ACCESO DIRECTO a URL?
- 12. Asignar tecla de acceso directo a un botón en WPF
- 13. acceso directo para ejecutar ensayos de hormigón
- 14. Acceso directo a memoria en Linux
- 15. Acceso directo a linux framebuffer - copyarea
- 16. Acceso directo de clase parcial de grupo
- 17. Resharper equivalente al acceso directo "Tab" de CodeRush (ir a siguiente/previo uso)
- 18. Acceso directo a los problemas JNLP
- 19. C++ plantilla de macro de acceso directo
- 20. Localizar en solución acceso directo a ReSharper
- 21. Proveedor de contenido vs acceso directo a la base de datos (gestión de transacciones)
- 22. Mejor Práctica: SQL Acceso Directo vs servicio web
- 23. Impedir el acceso directo a una página PHP
- 24. acceso directo para crear matriz de caracteres
- 25. acceso variable estática del método estático
- 26. Tecla de acceso directo usando C#
- 27. Rubí signo de colon acceso directo
- 28. backbone.js entre captadores vs acceso directo del modelo atribuye
- 29. Proteger archivo PHP de acceso directo
- 30. Acceso directo nulo en Delphi
Tenga en cuenta que en general se recomienda usar 'self.' (a menos que esté escribiendo el método getter/setter) incluso si _currently_ tiene 'attr_accessor'. Esto lo protege de los errores y el trabajo de refactorización adicional si más tarde cambia los métodos de acceso para hacer algo más que solo obtener/establecer la variable de instancia. (O si alguien más parchea o subclasifica su trabajo) – Phrogz
Uno de los errores de los que habla Phrogz es si simplemente llama attribute = _____ en lugar de self.attribute = ______ está configurando una variable local en lugar de la variable de instancia. –