Warum übernehmen Eigenschaften keinen neuen Wert von der Klassenmethode?

8

Ich versuche ein wenig mehr über Matlab-Klassen und ihre Eigenschaften zu verstehen. Hier ist eine Testklasse, die ich erstellt habe:

%Vor%

Nun erstelle ich eine Instanz dieser Klasse und rufe "change_var ()" ...

auf %Vor%

Warum hat die Eigenschaft "some_var" in der Zuweisung nicht den Wert "val"?

    
gnychis 10.11.2011, 21:45
quelle

2 Antworten

11

Die Klasse Test wurde als Wertklasse definiert im Gegensatz zu einer Handle-Klasse . Wenn Sie a.change_var aufrufen, wird a effektiv als Wert übergeben. Um die Änderung in der Eigenschaft some_var zu speichern, gehen Sie wie folgt vor:

%Vor%

Die Alternative besteht darin, Test zu einer Handle-Klasse zu machen. In diesem Fall würde das Beispiel in Ihrer Frage wie erwartet funktionieren. Erben Sie dazu von der Klasse handle , indem Sie die erste Zeile Ihrer Klassendefinition wie folgt ändern:

%Vor%     
b3. 10.11.2011, 21:54
quelle
3

Die Methode bietet eine Möglichkeit, die Eigenschaft zu ändern, Sie sollten jedoch auch das Objekt zurückgeben. Sie müssen Ihre Methode wie folgt ändern:

%Vor%

Beachten Sie, dass die Funktion das geänderte Objekt zurückgibt. Als Nächstes müssen Sie a mit der Änderung als aktualisieren:

%Vor%     
abcd 10.11.2011 21:56
quelle

Tags und Links