Ruby语言中的常量是一个初学者必须要掌握的基本内容之一,只有这样才能编写出一个完善的Ruby程序。一个Ruby类常量由大写字母开头。#t#
它应最多被赋值一次.在Ruby的当前版本中,常量的再赋值只会产生警告而不是错误(non-ANSI版的eval.rb不会报告这一警告)
- ruby>fluid=30
- 30
- ruby>fluid=31
- 31
- ruby>Solid=32
- 32
- ruby>Solid=33
- (eval):1: warning: already
initialized constant Solid - 33
Ruby类常量可以定义在类里,但不像实变量,它们可以在类的外部访问.
- ruby> class ConstClass
- | C1=101
- | C2=102
- | C3=103
- | def show
- | print C1," ",C2," ",C3,"\n"
- | end
- | end
- nil
- ruby> C1
- ERR: (eval):1: uninitialized
constant C1- ruby> ConstClass::C1
- 101
- ruby> ConstClass.new.show
- 101 102 103
- nil
Ruby类常量也可以定义在模块里.
- ruby> module ConstModule
- | C1=101
- | C2=102
- | C3=103
- | def showConstants
- | print C1," ",C2," ",C3,"\n"
- | end
- | 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 # not really a good idea
- 99
- ruby> C1
- 99
- ruby> ConstModule::C1 # the module's
constant is undisturbed ...- 101
- ruby> ConstModule::C1=99
- ERR: (eval):1: compile error
- (eval):1: parse error
- ConstModule::C1=99
- ^
- ruby> ConstModule::C1 # ..
regardless of how we tamper with it.- 101
以上就是对Ruby类常量的正确理解。