假设我有一个S
大小为 0x1 的结构,其中包含字段a
和b
,向其中添加字段的最优雅方法是c
什么?
通常我可以这样做:
S = struct('a',0,'b',0); %1x1 struct with fields a,b
S.c = 0
但是,如果我收到一个空结构,这将不再起作用:
S = struct('a',0,'b',0);
S(1) = []; % 0x1 struct with fields a,b
S.c = 0;
% A dot name structure assignment is illegal when the structure is empty.
% Use a subscript on the structure.
我想了两种方法来解决这个问题,但两者都很丑陋,感觉像是变通方法而不是解决方案。(请注意,也应正确处理非空结构的可能性)。
- 向结构添加内容以确保其不为空,添加字段,并使结构再次为空
- 使用所需的字段名初始化新结构,用原始结构中的数据填充它,并覆盖原始结构
我意识到我关心空结构可能很奇怪,但不幸的是,如果字段名不存在,那么不由我管理的部分代码将会崩溃。我已经查看了help struct
,help subsasgn
并且还搜索了给定的错误消息,但到目前为止我还没有找到任何提示。因此非常感谢您的帮助!