Sind die beiden Aussagen in Perl immer gleich?

7
%Vor%

Weiß jemand, ob sie gleich sind?

    
compile-fan 25.06.2011, 16:56
quelle

1 Antwort

22

Nein. Der Operator - & gt; bedeutet, dass eine Referenz (in diesem Fall eine Objektreferenz) aufgerufen wird und nicht nach der Methode SUPER die Super-Basisklasse.

Hier ist Code, um es zu zeigen:

%Vor%

Führen Sie es aus, Sie erhalten:

%Vor%

Wenn Sie die letzte Zeile ändern, um - & gt; anstelle von :: zu verwenden, erhalten Sie:

%Vor%

Aus dem Handbuch "perldoc perlop"

  

Der Pfeilbediener

     

Wenn die rechte Seite entweder ein "[...]", "{...}" oder ein "(...)" Index ist, dann muss die linke Seite entweder eine harte oder symbolische Referenz sein ein Array, ein Hash oder eine Subroutine.

     

Andernfalls ist die rechte Seite ein Methodenname oder eine einfache Skalarvariable, die entweder den Methodennamen oder eine Subroutinenreferenz enthält, und die linke Seite muss entweder ein Objekt (eine gesegnete Referenz) oder ein Klassenname (d. h. a Paketname)

Da die linke Seite weder ein Objektref noch ein Klassenname ist (SUPER ist ein in der Sprache definiertes Barwort für Polymorphie), wird es als eine Methode behandelt, die nicht existiert, daher der Fehler.

    
Corey Henderson 25.06.2011, 17:23
quelle

Tags und Links