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