Leider habe ich den Code nicht bekommen konnte die Formatierung in einem ‚Kommentar zur Arbeit 'nur in einer' Antwort ', aber das ist eine Antwort auf die Frage von Akostadinow an Hendrik "Wie unterscheidet sich das von seiner Antwort [von Konstantin]?"
Ich würde vermuten, Hendrik versucht, die Konstante von Methoden in seiner Klasse erben & zugreifen, die davon abhängt, ob es eine Instanz oder statische Methode ist. Es scheint sich so zu verhalten, wie Sie es von einer Instanzmethode erwarten. Aber vielleicht oder vielleicht nicht, wie Sie es für eine statische Methode erwarten würden. Auch wenn das nicht das, was Hendrik gemeint, so kann dieser bemerkenswert:
Wenn Sie die genauen Klassendefinitionen wie Konstantin, aber Sie fügen Sie eine Methode zur Klasse A wie folgt aus:
def self.print_const
puts CONST
end
Dann Sie A erhalten beide Male:
A.print_const # prints A
B.print_const # prints A
Allerdings, wenn Sie die Methode in A definieren, indem die Klasse verweisen:
def self.print_const
puts self::CONST
end
Dann erhalten Sie:
A.print_const # prints A
B.print_const # prints B
Perfekt, vielen Dank! – Tom
Also ... bedeutet dies, dass es keinen Weg gibt, dies zu tun, ohne überall in der Klasse A, die CONST verwendet, zu wechseln? – nohat
Ja. Konstantes Nachschlagen wird normalerweise zur Kompilierzeit gebunden. –