1
爲什麼以下方法不起作用?Ruby:訪問子類常量
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)
但是,您如何解釋問題中共享鏈接的行爲? – LPD
我不認爲這是真的。看看這篇文章在這裏:http://stackoverflow.com/questions/9014764/have-a-parent-classs-method-access-the-subclasss-constants,其中動物可以「把self.class :: NOISE」沒有曾經宣佈NOISe自己(見第二代碼塊Phrogz的答案)。而且,模塊可以訪問它們包含的類的實例變量;所以我不認爲你的陳述對於模塊是正確的。 – McKrassy
LPD,McKrassy您在混淆接收器是什麼。仔細地看。在這些情況下,構造函數應用於'Dog',而不是'Animal'。 「狗」有所有額外的東西; '動物'不。 – sawa