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?

 採用された回答

Adam
Adam 2017 年 1 月 16 日

0 投票

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 件のコメント

Shay Ohayon
Shay Ohayon 2017 年 1 月 16 日
x = x.updateA(10) will work, but it's kinda ugly. I'll look into the handle option. Thanks!
Adam
Adam 2017 年 1 月 16 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeArgument Definitions についてさらに検索

タグ

質問済み:

2017 年 1 月 16 日

コメント済み:

2017 年 1 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by