setting object properties in matlab classes
显示 更早的评论
Hi there, I have a very simple question. Is it not possible in matlab to modify an objects properties in a function? I am seeing strange results, but I am sure I am doing something wrong. below is a simple class. I multiply the property value "prop" by 2 inside the function addEntry, but it doesnt reflect in the object once it exits the function. Can anyone help?
classdef dummyclass
properties
prop
end
methods
function obj = dummyclass()
obj.prop=1;
end
function flag = addEntry(obj)
obj.prop=obj.prop*2;
obj.prop
flag = 1;
end
end
end
q=dummyclass;
q.prop
q.addEntry()
q.prop
回答(1 个)
Walter Roberson
2011-9-29
Unless you are using an object derived from the handle class, a copy of the object is modified. You have to return the modified object and store that over the original object.
function [obj, flag] = addEntry(obj)
obj.prop=obj.prop*2;
obj.prop
flag = 1;
end
and in user code,
[MyObj, flag] = MyObj.addEntry();
2 个评论
ABAK
2011-9-29
Walter Roberson
2011-9-29
http://www.mathworks.com/help/techdoc/matlab_oop/brfylq3.html
类别
在 帮助中心 和 File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!