the*_*alk 3 matlab struct eval
今天的另一集"趣味结构",这个是一个艰难的一集.我想通过给定长度的子字段列表动态创建嵌套结构,如下例所示:
x = 42;
a.e = struct;
subfields = {'b','c','d'}; %// arbitary length!
%// desired result
a.b.c.d = x;
Run Code Online (Sandbox Code Playgroud)
怎么办?
当然有一种邪恶的eval解决办法,但我尽量避免变得邪恶.
evalexp = ['a' cellfun(@(s) ['.' s], subfields, 'uni',0)];
evalexp = [evalexp{:}];
eval( [evalexp '= x'])
Run Code Online (Sandbox Code Playgroud)
你可以使用setfield:
x = 42;
a.e = struct;
subfields = {'b','c','d'};
a = setfield(a, subfields{:}, x);
Run Code Online (Sandbox Code Playgroud)
哪个回报:
>> a.b.c.d
ans =
42
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |