1

为什么以下不起作用?

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)
4

1 回答 1

3

当类A继承类B或包含/扩展模块C时,除了它自己的常量、变量和方法之外,还会A得到任何东西B。并且不受此影响。CBC

在您的情况下,BazFoo. Baz除了. _ Foo_ 没有任何额外的东西。特别是,没有.Baz::KEYLETTERSFooFoo::KEYLETTERS

于 2012-12-30T04:08:00.700 回答