的情况下我有一个类,如下所示:红宝石:访问类常数
class Foo
MY_CONST = "hello"
ANOTHER_CONST = "world"
def self.get_my_const
Object.const_get("ANOTHER_CONST")
end
end
class Bar < Foo
def do_something
avar = Foo.get_my_const # errors here
end
end
获得一个const_get uninitialized constant ANOTHER_CONST (NameError)
假设我只是在做一些愚蠢的在尽可能红宝石范围去。我正在测试此代码的机器上使用Ruby 1.9.3p0。
您希望在'Foo'上调用'const_get',而不是在'Object'上调用'const_get'。 'Foo'继承自'Object',所以它会响应'const_get',但是你需要将消息发送给可以正确响应它的对象 - 在这种情况下是'Foo',因为这是对象const被定义。 –
@ChrisHeald恰到好处!我可以把它放在我的答案中,就像你已经解释过的,或者让它自己评论一下? :) –