initialize - instance variable ruby
Ruby: initialize() contra el cuerpo de la clase? (3)
Bueno, initialize
se llama por new
, mientras que el cuerpo de la clase se evalúa en la definición / carga de la clase.
Además, intente establecer una variable de instancia en el cuerpo de la clase o en la initialize
. Notará que este último pertenecerá al objeto creado, mientras que el primero pertenecerá a la instancia de clase (de ahí la variable de instancia de clase de nombre).
En Ruby, ¿cuál es la diferencia entre poner código en un método initialize()
lugar de hacerlo directamente en el cuerpo de la clase? Ambos parecen ejecutarse al llamar a MyClass.new
.
Claramente, initialize()
puede aceptar parámetros, pero ¿es esa la única diferencia?
class MyClass
puts ''Hello''
def initialize(params)
puts ''World''
end
end
Intenta crear dos instancias de MyClass
a = MyClass.new
b = MyClass.new
para ver la diferencia:
Hola
Mundo
Mundo
El código en el cuerpo de la clase se ejecuta solo una vez, cuando Ruby carga el archivo. initialize () se ejecuta cada vez que creas una nueva instancia de tu clase.
si escribe un código en el cuerpo de la clase, se ejecutará cuando Ruby cargue esa clase, la carga solo puede ocurrir una vez. Y la inicialización se ejecutará solo cuando realice una instancia de clase, y se ejecutará cada vez que llame a new a la clase.
ahora cuando haces MyClass.new ruby carga la clase MyClass buscará clase en la memoria si no es así carga esa clase, luego llama a su nuevo método para crear instanc