MATLAB App Designer重置属性

时间:2018-05-10 11:04:38

标签: matlab

我在MATLAB App Designer中定义了一个私有属性列表,它们初始化如下:

properties (Access = private)
    prop1 = val1;
    prop2 = val2;
    ...
end

我现在想要一个函数将它们重置为上面定义的默认值。有没有办法自动执行此操作或我必须手动重置它们(这可能会导致错误,例如,当添加更多属性时)?

另外,有没有办法循环我用这种方式定义的所有属性?

1 个答案:

答案 0 :(得分:1)

如果您想重置私有属性,可以使用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