Ruby-Konstante innerhalb einer Klassenmethode

8
%Vor%

Gibt es eine Möglichkeit, mit diesem Selbstklassenaufruf von außerhalb der Klasse auf die Konstante zuzugreifen?

Es macht dies effektiv:

%Vor%

Ich verstehe, dass ich die Konstante aus diesem Selbstanruf heraus bewegen kann, um dieses Problem einfach zu lösen. Ich bin mehr neugierig auf das Innenleben von Ruby.

    
djburdick 09.03.2011, 18:20
quelle

3 Antworten

4

Nicht genau, was Sie wollten, aber Sie haben CONST nicht innerhalb der Klasse A definiert, sondern in seiner Metaklasse, in der ich deshalb eine Referenz gespeichert habe ...

%Vor%     
DigitalRoss 09.03.2011, 18:29
quelle
4

Ihr Problem ist, dass Sie sich über die Bedeutung des Codes irren.

%Vor%

entspricht nicht self.FOO = :bar . Es ist extrem anders. Dies entspricht self.singleton_class.const_set(:FOO, :bar) .

Ich nehme an, Sie gehen davon aus, dass class << self bedeutet "nehmen Sie an, es gibt ein implizites" Selbst "vor allem, was ich hier schreibe" oder etwas in dieser Richtung (vielleicht denken Sie an die with -Anweisung von JavaScript). Was es tatsächlich tut, bringt uns in den Kontext der Singleton-Klasse von self , einer speziellen Klasse, von der das aktuelle Objekt die einzige Instanz ist. Sie definieren also die Konstante für die Singleton-Klasse des Objekts.

Um eine Konstante für eine Klasse zu definieren, schreiben Sie einfach:

%Vor%     
Chuck 09.03.2011 23:13
quelle
1

Auch wahrscheinlich nicht genau das, was du wolltest, seit du die Klasse A in A's Metaklasse referenzierst (was irgendwie ein Betrüger zu sein scheint), aber es ist etwas prägnanter.

%Vor%

Für ein eingehendes Verständnis dessen, was hier vor sich geht, ist dieser Beitrag ziemlich informativ Ссылка

    
forforf 09.03.2011 22:53
quelle

Tags und Links