Matlab Klassenmethode: Zu viele Argumente

7

Ich habe einige verwandte Fragen gefunden, aber ich habe dort keine Antwort gefunden.

Ich schreibe eine einfache kleine MATLAB-Klasse, um die OOP-Syntax in MATLAB zu lernen. Ich kenne Python sehr gut und ziehe meine Haare aus, um mit MATLAB zu arbeiten. Hier ist die Definition:

%Vor%

Dies ist sicherlich nicht getan, aber ich benutze ein kleines Skript, um mit dem Objekt zu tun:

%Vor%

Die Instanziierung funktioniert, aber jede von mir aufgerufene Methode gibt einen Fehler aus. foo.start, zum Beispiel:

%Vor%

Was vermisse ich?

    
mrKelley 08.05.2013, 17:22
quelle

3 Antworten

22

Da ich nicht herausfinden kann, wie ich diese Frage löschen soll, werde ich mein Bestes geben, um sie zu beantworten. Wie andere Sprachen möchte auch die objektorientierte Programmierung in MATLAB obj als ersten Parameter in Klassenmethoden sehen (wie self in Python). Dieser Verweis auf das Objekt ist erforderlich, um seine Attribute zu ändern. Ich habe das nicht in Methodendefinitionen aufgenommen, also habe ich beim Aufruf der Methode den Fehler "zu viele Argumente" erhalten. Das liegt daran, dass wenn Sie foo.method(a,b) ausführen, das Objekt foo tatsächlich als Parameter übergeben wird, sodass Ihre Funktion tatsächlich 3 Eingaben erhält, d. H.% Co_de%.

Ich habe meinen Code durchgegangen und method(foo,a,b) an den entsprechenden Stellen hinzugefügt, aber die Verwendung von obj COMMAND im MATLAB-Befehlsfenster ist fehlgeschlagen. Da ich neu bei MATLAB bin, war mir dessen Wichtigkeit nicht bewusst. Ich nahm einfach an, die Datei zu speichern, und die erneute Instanziierung meiner Klasse würde ausreichen. Es ist nicht.

Ich hoffe, dies hilft jedem, der auf diese Frage stößt.

    
mrKelley 08.05.2013, 17:48
quelle
1

Sie müssen das obj nicht an die Eingabe übergeben, wenn Sie die Methoden als statisch deklarieren:

%Vor%     
quelle
0

Sie haben Ihre eigene Frage beantwortet, die großartig ist. Aber es scheint, dass Ihre Frage den Code enthält, den Sie am Anfang gekämpft haben. Ich hätte gedacht, dass dein Code am Anfang wie folgt aussieht:

%Vor%

und erst später wurde, was du in deiner Frage geschrieben hast:

%Vor%

Beachten Sie, dass das Ausführen des Codes in Ihrer Frage es mir ermöglicht, auf alle in Ihrer Klasse deklarierten Methoden zuzugreifen und sie auszuführen. Der Versuch, auf Methoden zuzugreifen, die im ersten Codeblock deklariert sind, würde zu dem Fehler "zu viele Argumente" führen. Der Versuch, auf Methoden zuzugreifen, die im zweiten Block deklariert wurden, funktioniert genauso wie erwartet.

    
fuzzybear3965 24.02.2015 23:17
quelle

Tags und Links