update instance property data without creating a new object?

How can I update a property without creating a new instance, using an instance method? For example:
classdef TestClass
properties
A = [];
end
methods
function obj=updateA(obj, val)
obj.A = val;
end
end
end
This will update A:
x = TestClass
x.A = 5;
However,
x.updateA(10)
will not update the instance x, but will create a new instance with the modified A. How can I update the property A of x using a class method without creating a new instance?

 Risposta accettata

x = x.updateA(10)
will update the current object.
Or you can derive your class from 'handle' to make it a pass-by-reference class which does not need to re-assign obj, but beware this has other implications too.

2 Commenti

x = x.updateA(10) will work, but it's kinda ugly. I'll look into the handle option. Thanks!
Well, that's the way pass-by-value classes work, you always have to reassign to the object. It was not at all intuitive to me either when I first did it (and still now since I use mostly handle-derived classes) since I came from a C++ background rather than some other language where this concept is also explicit.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Argument Definitions in Centro assistenza e File Exchange

Tag

Richiesto:

il 16 Gen 2017

Commentato:

il 16 Gen 2017

Community Treasure Hunt

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

Start Hunting!

Translated by