Ruby没有常量值?

5 ruby constants

这样写是可能的

class Foo
 MY_CONST = 100
end
Run Code Online (Sandbox Code Playgroud)

并且它也可以改变它 Foo::MY_CONST = 123

Ruby编译器会发出警告,但无论如何都会改变常量.

那么Ruby没有恒定的价值观?

thr*_*ree 2

这取决于您想对常量执行什么样的操作。

如果你有一个

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)