Updating property of an Object without creating new object

21 vues (au cours des 30 derniers jours)
Martyn
Martyn le 15 Mar 2015
Commenté : Arvind le 7 Déc 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 commentaires
Dr. ghada farouk
Dr. ghada farouk le 29 Déc 2018
Modifié(e) : Walter Roberson le 29 Déc 2018
you should write
x=x.increment(x);
Walter Roberson
Walter Roberson le 29 Déc 2018
Dr. ghada farouk: writing that is not needed if you use a handle class.

Connectez-vous pour commenter.

Réponse acceptée

Sebastian Castro
Sebastian Castro le 15 Mar 2015
Modifié(e) : Sebastian Castro le 15 Mar 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.
Check out this documentation page for the differences between value classes and handle classes.
- Sebastian
  4 commentaires
Redouane Bouchou
Redouane Bouchou le 10 Avr 2020
Thank you
Arvind
Arvind le 7 Déc 2022
thanks a lot.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Handle Classes dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by