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"?
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:
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:
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:
Tags und Links class matlab properties