[英]How to use properties to share data between two apps in MATLAB App Designer?
[英]MATLAB App Designer reset properties
我在MATLAB App Designer中定义了一个私有属性列表,这些私有属性的初始化如下:
properties (Access = private)
prop1 = val1;
prop2 = val2;
...
end
我现在想拥有一个将它们重置为上面定义的默认值的函数。 有没有一种方法可以自动执行此操作,还是必须手动重置它们(这可能会导致错误,例如添加更多属性时)?
另外,有没有一种方法可以遍历以这种方式定义的所有属性?
如果只希望完全重置私有属性,则可以使用metaclass
访问属性的属性并根据需要进行调整。
例如:
classdef SOcode < handle
properties
a
b
end
properties (Access = private)
c = -1
d = -1
end
methods
function self = SOcode()
end
function changeprivate(self)
self.c = randi(5);
self.d = randi(5);
end
function printprivate(self)
fprintf('c = %d\nd = %d\n', self.c, self.d)
end
function resetprivate(self)
tmp = metaclass(self);
props = tmp.PropertyList;
nprops = numel(props);
for ii = 1:nprops
if strcmp(props(ii).SetAccess, 'private')
self.(props(ii).Name) = props(ii).DefaultValue;
end
end
end
end
end
提供所需的行为:
>> test = SOcode;
>> test.changeprivate;
>> test.printprivate;
c = 1
d = 1
>> test.resetprivate;
>> test.printprivate;
c = -1
d = -1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.