Folgende Aufrufe an statische Methoden mit Indizierung beim Importieren von Klassen

8

Ich habe eine Klassendatei myClass.m in einem Paketordner +myPack , der sich auf dem Pfad befindet. Ein einfaches Beispiel für die Klassendatei ist:

%Vor%

Wenn ich jetzt direkt die Methode aufrufen und auf die Eigenschaft mit dem vollen Paketnamen zugreifen, d. h .:

%Vor%

gibt x = 2 korrekt zurück. Nun, wenn ich das gleiche versuche, indem ich diese Klasse importiere (und nicht den Paketnamen verwende):

%Vor%

es gibt mir den folgenden Fehler:

  

Statische Methoden- oder Konstruktoraufrufe können nicht indiziert werden.   Folgen Sie nicht dem Aufruf der statischen Methode oder des Konstruktors mit   jede zusätzliche Indizierung oder Punktreferenzen.

Warum funktioniert das im ersten Fall und nicht im zweiten? Soweit ich verstanden habe, erlaubt es import in einer Klasse hauptsächlich, den Klassennamen ohne den langen Paketnamen zu verwenden (neben anderen Überlegungen). Was ist der Unterschied in diesen beiden, der diesen Fehler verursacht und wie kann ich umgehen?

    
abcd 03.05.2012, 22:52
quelle

1 Antwort

4

Hier ist etwas komischer für Sie: Das Verhalten ist anders, wenn Sie im Befehlsfenster, von einem Skript oder von einer Funktion laufen!

1) Eingabeaufforderung (1: OK, 2: Fehler)

Das haben Sie bereits gezeigt

%Vor%

2) Skript (1. Fehler: 2. Fehler:

)

testMyClassScript.m

%Vor%

und

%Vor%

(die zweite Zeile würde auch den gleichen Fehler auslösen)

3) Funktion (1: ok, 2: ok)

testMyClassFunction.m

%Vor%

und

%Vor%

Ich würde das definitiv einen Fehler nennen :) Das erwartete Verhalten ist, in allen Fällen einen Fehler zu geben.

    
Amro 28.05.2012 07:27
quelle

Tags und Links