Updating property of an Object without creating new object

조회 수: 22 (최근 30일)
Martyn
Martyn 2015년 3월 15일
댓글: Arvind 2022년 12월 7일
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
Dr. ghada farouk
Dr. ghada farouk 2018년 12월 29일
편집: Walter Roberson 2018년 12월 29일
you should write
x=x.increment(x);
Walter Roberson
Walter Roberson 2018년 12월 29일
Dr. ghada farouk: writing that is not needed if you use a handle class.

댓글을 달려면 로그인하십시오.

채택된 답변

Sebastian Castro
Sebastian Castro 2015년 3월 15일
편집: Sebastian Castro 2015년 3월 15일
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
Arvind
Arvind 2022년 12월 7일
thanks a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Handle Classes에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by