我想在Ruby中定义2个常量,这样第二个常量就取决于第一个常量。这是我在做什么:在Ruby中定义2个常量
class MyClass
MY_CONST = [
:aaa,
:bbb,
:ccc
]
MY_CONST2 = self::MY_CONST << :ddd
end
但是,下面的代码由于某种原因打印第二个常量的值。
puts MyClass::MY_CONST
puts '------------------'
puts MyClass::MY_CONST2
##################
aaa
bbb
ccc
ddd
------------------
aaa
bbb
ccc
ddd
为什么?除了将它们定义为def
之外,有什么方法可以摆脱它吗?
def self.my_const
[:aaa, :bbb, :ccc]
end
def self.my_const2
self::my_const << :ddd
end
只要做'MY_CONST + [:ddd]' –
好点,谢谢! –
如果MY_CONST被冻结,那么'MY_CONST.clone <<:ddd'将引发异常。我建议使用'.dup'而不是'.clone' –