Tutorial de Ruby – Parte 26 – Constantes

Una constante tiene un nombre que comienza con una letra mayúscula. Se le debe asignar valor sólo una vez. En la implementación actual de Ruby, reasignar un valor a una constante genera un aviso y no un error (la versión no ANSI de eval.rb no informa de este aviso):

 

ruby> fluid = 30

30

ruby> fluid = 31

31

ruby> Solid = 32

32

ruby> Solid = 33

(eval):1: warning: already initialized constant Solid

33

 

Las constantes se pueden definir en una clase, pero a diferencia de las variables de instancia, son accesibles desde el exterior de la misma.

 

ruby> class ConstClass

ruby| C1=101

ruby| C2=102

ruby| C3=103

ruby| def show

ruby| print C1,» «,C2, » «,C3,»\n»

ruby| end

ruby| end

nil

ruby> C1

ERR: (eval):1: uninitialized constant C1

ruby> ConstClass::C1

101

ruby> ConstClass.new.show

101 102 103

nil

 

Las constantes también se pueden definir en un módulo.

 

ruby> class ConstClass

ruby| C1=101

ruby| C2=102

ruby| C3=103

ruby| def show

ruby| print C1,» «,C2, » «,C3,»\n»

ruby| end

ruby| end

nil

ruby> C1

ERR: (eval):1: uninitialized constant C1

ruby> ConstClass::C1

101

ruby> ConstClass.new.show

101 102 103

nil

 

Las constantes también se pueden definir en un módulo.

ruby> module ConstModule

ruby| C1=101

ruby| C2=102

ruby| C3=103

ruby| def showConstants

ruby| print C1,» «,C2,» «,C3,»\n»

ruby| end

ruby| end

nil

ruby> C1

ERR: (eval):1: uninitialized constant C1

 

ruby> include ConstModule

Object

ruby> C1

101

ruby> showConstants

101 102 103

nil

ruby> C1=99 # realmente una idea no muy buena

99

ruby> C1

99

ruby> ConstModule::C1 # La constante del módulo queda sin tocar …

101

ruby> ConstModule::C1=99

ERR: (eval):1: compile error

(eval):1: parse error

ConstModule::C1=99

^

ruby> ConstModule::C1 #… independientemente de lo que hayamos jugado con ella

101

 

Gus Terrera

Apasionado por el agile testing y la ia.

Deja una respuesta