1

以下が機能しないのはなぜですか?

class Foo
    def self.keyletters
        self::KEYLETTERS
    end
end

class Baz < Foo
    KEYLETTERS = "US"
end

puts Foo.keyletters

同様の問題に関する質問を見てきました (例:親クラスのメソッドがサブクラスの定数にアクセスするようにする) が、私の場合、Foo.keyletters はクラス メソッドであり、インスタンス メソッドではありません。私は得ています

uninitialized constant Foo::KEYLETTERS (NameError)
4

1 に答える 1

3

クラスがクラスAを継承するBか、モジュールを含む/拡張するC場合、それ自体の定数、変数、およびメソッドに加えて、何Aでも取得します。影響を受けません。BCBC

あなたの場合、BazはのサブクラスですFoo。に加えて、Baz持っているものは何でもあります。それに加えて何もありません。特にありません。FooBaz::KEYLETTERSFooFoo::KEYLETTERS

于 2012-12-30T04:08:00.700 に答える