Tuesday, October 21, 2008

(3)常量

常量和变量类似,只不过它的值一直保持不变,当然Ruby没有强制规定你不能修改常量的值,只不过如果你修改一个常量的值时会得到一个警告信息。表面上看起来常量和变量没什么区别,不过常量一般以大写字母开头,通常我们会把常量的所有字母都大写LIKE_THIS,并且在每个单词之间用下划线分隔。Ruby中的类目和模块名也是常量,不过它们通常使用每个单词首字母大写的驼峰式写法LikeThis。
常量的特性有些像全局变量,它可以在程序任何地方被引用,但和全局变量不同他可以在类或者模块中定义。
CM_PER_INCH = 2.54  # 定义一个常量.
CM_PER_INCH # 使用这个常量.
如果你在一个类或者模块中定义了一个常量,那么在引用这个常量的时候需要加上类或者模块前缀。
class Master
PP=2.00
end
puts Master::PP

有时候,模块是嵌入到另一个模块中的,这中情况下对常量的引用可以这样写:
Conversions::Area::HECTARES_PER_ACRE

如果一个常量存在于全局范围,那么::前面的内容可以省略:
::ARGV      # 全局常量 ARGV
需要注意的是我们这里说到的“全局”,实际上就是Object类内,也就是说上面的常量实际上是Object::ARGV。
而且如果没有给常量赋值,那么在调用这个常量的时候你会得到NameError异常。


No comments: