说我有以下内容:
classdef Classname
properties
property1
end
methods
function a = Classname
a.property1 = ' ';
end
function new = change(a,k)
a.property1(k) = '!';
new = a.property1;
end
end
end
现在当我使用a = Classname
在控制台中运行它然后运行函数change(a,2)
时,我得到的输出是:(为了清晰起见而放入撇号而不是输出的一部分)
ans =
' ! '
当我输入ans.property1
时,我得到与上面相同的输出,这是预期的,但是当我输入a.property1
时,我只输出原始电路板,即' '
。< / p>
我的问题是,如何让a.property1
显示当前保存的属性1,以便输出' ! '
答案 0 :(得分:1)
正如汤姆在评论中指出的那样,你可以简单地让你的Classname
班成为handle
班的一个子类:
classdef Classname < handle
properties
property1
end
methods
function a = Classname
a.property1 = ' ';
end
function new = change(a,k)
a.property1(k) = '!';
new = a.property1;
end
end
end
现在,您的示例提供了所需的行为:
a = Classname;
change(a,2); % Or a.change(2);
a.property1
给出:
ans =
!
如果您不想使用句柄类,可以按如下方式重新制定change
方法,创建并返回班级的新实例:
classdef Classname
properties
property1
end
methods
function a = Classname
a.property1 = ' ';
end
function a_new = change(a,k)
a_new = a;
a_new.property1(k) = '!';
end
end
end
现在的例子
a = Classname;
a = change(a,2); % Or a = a.change(2);
a.property1
给出:
ans =
!