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?

 Respuesta aceptada

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 comentarios

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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Construct and Work with Object Arrays en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 16 de En. de 2017

Comentada:

el 16 de En. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by