Updating property of an Object without creating new object
22 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Martyn
am 15 Mär. 2015
Kommentiert: Arvind
am 7 Dez. 2022
Hi
I’m writing a class for the first time, and got an issue I don’t understand.
To simplify the problem, assume my class is as follows:
========================================
classdef testClass
properties
count
end
methods
function obj = testClass
obj.count = 1;
end
function obj = increment(obj)
obj.count = obj.count + 1;
end
end
end
========================================
>> x = testClass;
This creates the class and sets x.count to 1 as required
I then want to increment the value of x.count I was hoping that:
>> x.increment;
would add 1 to count. But it simply creates a new object (‘ans’), where ans.count == 2
I can of course write,
>> x = x.increment;
But that feels illogical.
I've tried various things, and Googled the type of problem, but have found a solution. So any guidance would be welcome.
Thanks. Martyn
2 Kommentare
Dr. ghada farouk
am 29 Dez. 2018
Bearbeitet: Walter Roberson
am 29 Dez. 2018
you should write
x=x.increment(x);
Walter Roberson
am 29 Dez. 2018
Akzeptierte Antwort
Sebastian Castro
am 15 Mär. 2015
Bearbeitet: Sebastian Castro
am 15 Mär. 2015
When you create a class in MATLAB, it is by default a value class. If you want to update objects by reference, you should make this a handle class by changing the first line to:
classdef testClass < handle
EDIT: Also, you wouldn't necessarily need output arguments for the methods of the handle class.
- Sebastian
4 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Handle Classes finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!