今天的另一集“结构的乐趣”,这是一个艰难的一集。
我想通过给定的任意长度子字段列表动态创建嵌套结构,如下例所示:

x = 42;
a.e = struct;
subfields = {'b','c','d'}; %// arbitary length!

%// desired result
a.b.c.d = x;

怎么能做到?
当然有邪恶的解决方案,但我尽量避免邪恶。
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

10-06 04:13