當我有訪問一個類的常量變量
class Foo
CONSTANT_NAME = ["a", "b", "c"]
...
end
是否有訪問Foo::CONSTANT_NAME
的方式或做我必須做一個類的方法來訪問值?
當我有訪問一個類的常量變量
class Foo
CONSTANT_NAME = ["a", "b", "c"]
...
end
是否有訪問Foo::CONSTANT_NAME
的方式或做我必須做一個類的方法來訪問值?
你貼什麼應該很好地工作:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
end
Foo::CONSTANT_NAME
# => ["a", "b", "c"]
如果你正在寫一個包含常數的類中的其他代碼,你可以把它當作一個全球性的。
class Foo
MY_CONSTANT = "hello"
def bar
MY_CONSTANT
end
end
Foo.new.bar #=> hello
如果你訪問類的不變之外,與類名前綴了,就跟着兩個冒號
Foo::MY_CONSTANT #=> hello
是否有訪問
Foo::CONSTANT_NAME
的方法嗎?
是的,有:
Foo::CONSTANT_NAME
當我試圖訪問它時,我有下面的警告。警告:已經初始化了常量TestData :: CONSTANT_VAR這個變量沒有在其他地方初始化。爲什麼我有這個警告? –
一些替代方案:
class Foo
MY_CONSTANT = "hello"
end
Foo::MY_CONSTANT
# => "hello"
Foo.const_get :MY_CONSTANT
# => "hello"
x = Foo.new
x.class::MY_CONSTANT
# => "hello"
x.class.const_defined? :MY_CONSTANT
# => true
x.class.const_get :MY_CONSTANT
# => "hello"
嗯,當我在前面測試一定是我輸錯。 Ooops :) –
niiiceee男子!你再次拯救我:D –
爲了真正成爲一個常量,不要忘記在值的末尾添加一個.freeze! 「CONSTANT_NAME = [」a「,」b「,」c「]。freeze' – mutexkid