【发布时间】:2013-01-27 15:08:15
【问题描述】:
假设我有一个大小为 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.
我想了两种方法来解决这个问题,但两者都很丑陋,感觉像是变通方法而不是解决方案。 (注意非空结构体的可能性也应妥善处理)。
- 向结构中添加一些内容以确保其不为空,添加字段,并使结构再次为空
- 使用所需的字段名初始化新结构,用原始结构中的数据填充它,并覆盖原始结构
我意识到我关心空结构可能很奇怪,但不幸的是,如果字段名不存在,那么不由我管理的部分代码将会崩溃。我查看了help struct、help subsasgn 并搜索了给定的错误消息,但到目前为止我还没有找到任何提示。因此非常感谢您的帮助!
【问题讨论】:
标签: matlab struct variable-assignment