ruby 类常量 解析

时间:2022-05-05 08:23:22

一个常量由大写字母开头.它应最多被赋值一次.在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