Constantes
Una constante es una referencia inmutable a un objeto; mientras que las variables sí se podían. Las constantes se crean cuando son asignadas por primera vez. En la actual versión de Ruby, reasignar una constante (intentar cambiar su valor) genera una advertencia, pero no un error.
Las constantes se ponen en mayúsculas:
CONST = 10 CONST = 20
Alcance de las constantes
- Las constantes definidas dentro de una clase o módulo pueden ser usadas en cualquier lugar dentro de la clase o módulo.
- Fuera de la clase o módulo, se pueden usar mediante el opoerador :: precedido de una palabra que indique el módulo o clase apropiados.
- Las constantes definidas fuera de cualquier clase o módulo pueden ser usadas mediante el operador :: pero sin palabra que lo preceda.
- Las constantes no pueden ser definidas dentro de un método.
CONST_EXTERNA = 99 class Const CONST = CONST_EXTERNA + 1 def get_const CONST end end puts Const.new.get_const # 100 puts Const::CONST # constante dentro de la clase Const puts ::CONST_EXTERNA # constante externa a toda clase puts Const::NEW_CONST = 123
Repaso a los tipos de variables
# los nombres de las variables y métodos empiezan por minúsculas $glob = 5 # las variables globales empiezan por $ class TestVar # nombre de clase, empieza por mayúsculas @@cla = 6 # las variables de clase empiezan por @@ CONST_VAL = 7 # constante: todo mayúsculas y/o _ def initialize(x) # constructor @inst = x # variables de objeto empiezan por @ @@cla += 1 # cada objeto comparte @@cla end def self.cla # método de clase, lector de atributo @@cla end def self.cla=(y) # método de clase, modificador de atributo"0@%0 @@cla = y end def inst # método de objeto, lector @inst end def inst=(i) # método de objeto, modificador @inst = i end end puts $glob test = TestVar.new(3) puts test.inspect # da el ID del objeto y sus variables TestVar.cla = 4 test.inst=8 puts test.inst puts TestVar.cla otro = TestVar.new(17) # 'cla' se modifica cada vez # que se crea un objeto puts TestVar.cla puts otro.inspect
revisión de página: 1, última edición: 03 Dec 2007 18:06