这样写是可能的
class Foo
MY_CONST = 100
end
Run Code Online (Sandbox Code Playgroud)
并且它也可以改变它 Foo::MY_CONST = 123
Ruby编译器会发出警告,但无论如何都会改变常量.
那么Ruby没有恒定的价值观?
这取决于您想对常量执行什么样的操作。
如果你有一个
ARRAY = [1,2,3]
#and then
ARRAY << 4
Run Code Online (Sandbox Code Playgroud)
鲁比不会抱怨。
但是,如果您
ARRAY = [1,2,3].freeze
#and
ARRAY << 4
#RuntimeError: can't modify frozen Array
Run Code Online (Sandbox Code Playgroud)
你仍然可以
ARRAY = [1,2,3,4]
#warning: already initialized constant ARRAY
Run Code Online (Sandbox Code Playgroud)