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 |