[code lang=”ruby”]
#定数は大文字のアルファベットで始まる名前で指定される。
#p FOO #未定義の定数へのアクセスはエラー
F00 = 5
p F00
#F00 = 10 #定義された定数への代入はエラー
module ConstTest
CONST1 = 1
CONST2 = 2
CONST3 = 3
print "L3 ", CONST1, CONST2, CONST3,"\n"
def const_test
print CONST1, CONST2, CONST3,"\n"
end
end
#print CONST1, CONST2, CONST3, "\n" #このままではエラー
include ConstTest #includeすればOK
print "L1 ",CONST1, CONST2, CONST3, "\n"
CONST1 = 100 #エラーにはならないが、
print "L2 "
const_test() #値に変更はない。
p ConstTest::CONST1;p ConstTest::CONST2; p ConstTest::CONST3;
#ConstTest::CONST1 = 100 #参照は出来るが代入は出来ない
=begin
上の例ではConstTestモジュールに対して
`::’を使うと定数,CONST1,CONST2,CONST3は参照できるが,
ConstTestをincludeしたクラスであるObjectに対して`::’でCONST2,
CONST3をアクセスできない(CONST1は再定義しているので参照でき
るのだが).
=end
[/code]