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