繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM