gpt4 book ai didi

ruby - 在 Ruby 中定义 2 个常量

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:39 26 4
gpt4 key购买 nike

我想在 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

最佳答案

您正在访问常量错误。它是一个类常量,因此,当您定义该类时,您可以在本地引用它:

class MyClass

MY_CONST = [
:aaa,
:bbb,
:ccc
]

MY_CONST2 = MY_CONST + [:ddd]
end

另外,你正在变异 MY_CONST ,这不是您想要做的。 <<更改 MY_CONST 的值然后分配给 MY_CONST2所以他们都是一样的:

MyClass::MY_CONST.object_id
# => 70359163729880
MyClass::MY_CONST2.object_id
# => 70359163729880

定义MY_CONST2之后正确:

[14] (pry) main: 0> MyClass::MY_CONST[    [0] :aaa,    [1] :bbb,    [2] :ccc][15] (pry) main: 0> MyClass::MY_CONST2[    [0] :aaa,    [1] :bbb,    [2] :ccc,    [3] :ddd]

关于ruby - 在 Ruby 中定义 2 个常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com