假设我有一个大小为0x1的结构S,字段为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.
我已经想到了两种方法来处理这个问题,但两者都非常难看并且感觉像是解决方法而不是解决方案. (注意,非空结构的可能性也应该正确处理).
>向结构中添加一些内容以确保它不为空,添加字段,并再次将结构设置为空
>使用必需的字段名初始化新结构,使用原始结构中的数据填充它,并覆盖原始结构
我意识到我关心空结构可能很奇怪,但不幸的是,如果字段名不存在,那么我未管理的部分代码将崩溃.我看了帮助struct,帮助subsasgn并搜索给定的错误消息但到目前为止我还没有找到任何提示.因此非常感谢帮助!