一个常量由大写字母开头.它应最多被赋值一次.在Ruby的当前版本中,常量的再赋值只会产生警告而不是错误(non-ANSI版的eval.rb不会报告这一警告)
ruby>fluid=30
30
ruby>fluid=31
31
ruby>Solid=32
32
ruby>Solid=33
(eval):1:warning:alreadyinitializedconstantSolid
33
常量可以定义在类里,但不像实变量,它们可以在类的外部访问.
ruby>classConstClass
|C1=101
|C2=102
|C3=103
|defshow
|printC1,"",C2,"",C3,"\n"
|end
|end
nil
ruby>C1
ERR:(eval):1:uninitializedconstantC1
ruby>ConstClass::C1
101
ruby>ConstClass.new.show
101102103
nil
常量也可以定义在模块里.
ruby>moduleConstModule
|C1=101
|C2=102
|C3=103
|defshowConstants
|printC1,"",C2,"",C3,"\n"
|end
|end
nil
ruby>C1
ERR:(eval):1:uninitializedconstantC1
ruby>includeConstModule
Object
ruby>C1
101
ruby>showConstants
101102103
nil
ruby>C1=99#notreallyagoodidea
99
ruby>C1
99
ruby>ConstModule::C1#themodule'sconstantisundisturbed...
101
ruby>ConstModule::C1=99
ERR:(eval):1:compileerror
(eval):1:parseerror
ConstModule::C1=99
^
ruby>ConstModule::C1#..regardlessofhowwetamperwithit.
101