还有今天的另一集“Fun with structs”,这一集很难。 我想通过给定的任意长度子字段列表动态创建嵌套结构,如以下示例所示:
x = 42;
a.e = struct;
subfields = {'b','c','d'}; %// arbitary length!
%// desired result
a.b.c.d = x;
如何做到这一点?
当然有一个邪恶的eval
解决方案,但我尽量避免成为邪恶的。
evalexp = ['a' cellfun(@(s) ['.' s], subfields, 'uni',0)];
evalexp = [evalexp{:}];
eval( [evalexp '= x'])
最佳答案
您可以使用 setfield
:
x = 42;
a.e = struct;
subfields = {'b','c','d'};
a = setfield(a, subfields{:}, x);
哪个返回:
>> a.b.c.d
ans =
42
关于matlab - 通过子字段列表更新嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332439/