gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:07 24 4
gpt4 key购买 nike

假设我有以下类(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com