oop - MATLAB - 设置/获取结构字段的访问权限?

标签 oop matlab

假设我有以下类(class):

classdef myClass
    properties
        Globals = struct(...
            'G1', 1,     ...
            'G2', 2      ...
        );
    end
    methods
         % methods go here
    end
end

我使用结构体是因为还有其他结构体属性。

有什么方法可以为结构的字段提供 setter 吗?天真地提供

function obj = set.Globals.G1(obj, val)
    obj.Globals.G1 = val; % for example
end

不起作用。

最佳答案

您必须为整个结构定义设置方法(见下文)。或者,您可以为“Globals”定义一个类,对于大多数实际用途而言,它看起来和感觉起来都像一个结构(除非您不能拼错字段名称),并且可以为其属性实现自己的 set/get 方法。

function obj = set.Globals(obj,val)

%# look up the previous value
oldVal = obj.Globals;

%# loop through fields to check what has changed
fields = fieldnames(oldVal);

for fn = fields(:)' %'#
   %# turn cell into string for convenience
   field2check = fn{1};

   if isfield(val,field2check)
      switch field2check
      case 'G1'
         %# do something about G1 here
      case 'G2'
         %# do something about G2 here
      otherwise
         %# simply assign the fields you don't care about
         obj.Globals.(field2check) = val.(field2check);
      end
   end
end
end %# function

关于oop - MATLAB - 设置/获取结构字段的访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070180/

相关文章:

php - 使用 OOP 管理用户

c# - 坚持对象创建

oop - 如何在抽象派生类型中设计 PRIVATE OVERRIDABLE 过程?

matlab - 如何将字符串转换为枚举?

matlab - 简单的 imwrite 不写入文件

java - OOP 和堆/栈

python - 在 Python 中处理具有未知默认值的类属性

python - Matlab以合理的格式输出矩阵到文件

matlab - 从 MATLAB 图形对象继承

c++ - MATLAB 或 C、C++ 代码中是否有与 bwmorph(image ,'skel' ) 相反的函数?