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
Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution 3.0 License