¿Cuál es una variable definida dentro de la definición de clase sin decorador @o @@?

StackOverflow https://stackoverflow.com/questions/8321817

  •  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?

¿Fue útil?

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
scroll top