Was ist der Unterschied zwischen @ und @@ in einem Modul?

8

Angenommen, ein Modul ist enthalten, nicht erweitert, was ist der Unterschied zwischen Modulinstanzvariablen und Klassenvariablen?

Ich sehe keinen Unterschied zwischen zwei.

%Vor%

Ich habe @ als @@ innerhalb eines Moduls verwendet, und ich habe kürzlich gesehen, dass andere Codes @@ innerhalb eines Moduls verwenden. Dann dachte ich, ich hätte es vielleicht falsch benutzt.

Da wir ein Modul nicht instanziieren können, darf es für ein Modul keinen Unterschied zwischen @ und @@ geben. Liege ich falsch?

----------------------- hinzugefügt die folgenden --------------------

Um einige Fragen zu Kommentaren und Beiträgen zu beantworten, habe ich auch Folgendes getestet.

%Vor%

Wenn Sie ein Modul in eine Klasse einschließen, sind Modulklassenvariablen und Klassenmethoden nicht in einer Klasse definiert.

    
allenhwkim 10.09.2012, 19:19
quelle

3 Antworten

5

Klassenvariablen können für Module und Klassen verwendet werden, in denen diese Module enthalten sind.

%Vor%

Mittlerweile gehören Instanzvariablen zu self . Wenn Sie das Modul A in die Klasse B einfügen, ist self object von A nicht das gleiche wie self Objekt von B, daher können Sie keine Instanzvariablen zwischen ihnen austauschen.

%Vor%     
hs- 10.09.2012, 20:09
quelle
3

@@ bezieht sich auf die Klassenvariable und @ auf die Instanzvariable. Die Verwendung dieses Moduls macht einen großen Unterschied. Wenn Sie ein Modul hinzufügen, fügen Sie der Klasse Klassenmethoden hinzu, während Sie die Instanzmethoden zu Ihrer Klasse hinzufügen

Nachfolgend finden Sie einen schönen Artikel dazu

Ссылка

    
maximus ツ 10.09.2012 19:44
quelle
0

Ich habe diesen SO-Beitrag gefunden, in dem es darum geht, Klassenvariablen in Modulen zu erstellen "Sie werden nativ unterstützt." Ein Kommentator sagt sogar, dass der Name "Klassenvariable" irreführend ist, da Klassen einfach sind Module mit ein paar zusätzlichen Kräften.

Ich bin mir sicher, dass fast jeder Artikel, den ich über Klassenvariablen gelesen habe, denkt, dass sie böse sind und um jeden Preis wegen der seltsamen Vererbungsprobleme, denen Sie begegnen können, zu vermeiden.

    
lyonsinbeta 10.09.2012 19:46
quelle

Tags und Links