我有一个如下所示的课程:
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范围内做一些愚蠢的事情。我目前正在我正在测试此代码的机器上使用Ruby 1.9.3p0。
答案 0 :(得分:3)
现在正在工作:
class Foo
MY_CONST = "hello"
ANOTHER_CONST = "world"
def self.get_my_const
const_get("ANOTHER_CONST")
end
end
class Bar < Foo
def do_something
avar = Foo.get_my_const
end
end
Bar.new.do_something # => "world"
您的以下部分不正确:
def self.get_my_const
Object.const_get("ANOTHER_CONST")
end
在方法get_my_const
中,self是Foo
。所以删除Object
,它会工作..
答案 1 :(得分:3)
您可以使用const之类:
Foo::MY_CONST
Foo::ANOTHER_CONST
您可以获得一系列常量:
Foo.constants
Foo.constants.first
使用您的代码:
class Foo
MY_CONST = 'hello'
def self.get_my_const
Foo::MY_CONST
end
end
class Bar < Foo
def do_something
avar = Foo.get_my_const
end
end
x = Bar.new
x.do_something
答案 2 :(得分:1)
我建议您通过自我MTKView
,以便始终获得正确的常量。
self.class.const_get("MY_CONST")