matlab - 通过子字段列表更新嵌套结构

标签 matlab struct eval

还有今天的另一集“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/

相关文章:

matlab - 如何在 MATLAB 中为多个属性编写通用设置方法

c - 在 C 中使一个指针指向另一个指针所指向的内容

java - 将 C# 代码移植到 Java

matlab - 如何在 Matlab 中重载用户定义的函数?

matlab - 考虑每行的所有可能排列,查找元胞数组的唯一行

c - 这个 C 递归结构会正确解除分配吗?

r - dplyr 或向量化方法中的动态变量评估

java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String"

javascript eval 反斜杠在window NT路径问题

Matlab 与 Octave 兼容性 - 计算机视觉差异?