¿Cuál es una variable definida dentro de la definición de clase sin decorador @o @@?
-
26-10-2019 - |
Pregunta
En Ruby, dicho código es legal:
class Aclass
m = 1
end
Pero semánticamente hablando, ¿qué m
ser, ¿y cómo se supone que se accede?
Solución
m
es solo una variable local. Solo se puede acceder desde la definición de clase. Podría usarse para arrancar la clase, por ejemplo, pero no se puede acceder desde cualquier otro lugar.
Por ejemplo:
class Aclass
m=1
puts "m is #{m}"
end
Ese código se ejecutaría solo una vez, cuando necesite el archivo que contenga esa clase. Esto es algo análogo a Java's Bloques de inicialización estática.
Otros consejos
No estoy seguro para para qué el término semántico m
es, pero es solo una variable regular en el alcance de la clase. Sin embargo, no podrá acceder a ella fuera de la clase (ni siquiera en los métodos definidos en la clase).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow