为什么以下不起作用?
class Foo
def self.keyletters
self::KEYLETTERS
end
end
class Baz < Foo
KEYLETTERS = "US"
end
puts Foo.keyletters
我已经看到类似问题的问题(例如:Have a parent class's method access the subclass's constants),但在我的情况下,Foo.keyletters是一个类方法,而不是实例方法。我正在
uninitialized constant Foo::KEYLETTERS (NameError)
答案 0 :(得分:3)
当课程A
继承课程B
或包含/ extends模块C
时,A
会获得B
和C
所拥有的内容除了它自己的常量,变量和方法。 B
和C
不受此影响。
在您的情况下,Baz
是Foo
的子类。因此Baz
除了Foo
之外还有Baz::KEYLETTERS
所拥有的内容。 Foo
除此之外没有任何内容。特别是,没有Foo::KEYLETTERS
。