假设我在Matlab中创建了以下结构:
spec.Property1 = 0
spec.Property2 = 0
spec.Property3.Name = 0
spec.Property3.Something = ''
它正在工作,我得到了我期望的结构:
Property1: 0
Property2: 0
Property3: [1×1 struct]
假设我想这样做:
nameOfNewStruct1 = 'Property1'
nameOfNewStruct2 = 'Property2'
nameOfNewStruct3 = 'Property3.Name'
nameOfNewStruct4 = 'Property3.Something'
spec.(nameOfNewStruct1) = 0
spec.(nameOfNewStruct2) = 0
spec.(nameOfNewStruct3) = 0
spec.(nameOfNewStruct4) = ''
Invalid field name: 'Property3.Name'.
为什么不起作用?如果我想使用'Something.Something'字符,需要更改设置吗?
谢谢!
答案 0 :(得分:1)
来自Loren(查看2011年第20期的评论)https://blogs.mathworks.com/loren/2005/12/13/use-dynamic-field-references/,这是(当然?)你尝试的方式不可能。一个简单的解决方案是等效spec.('Property3').('Name')
。
如何以与你的相似的方式,以任意深度,在稍后的评论中回答。
A.l1.l2.l3.l4 = 1234;
fieldname = 'l1.l2.l3.l4';
eval(['A.',fieldname])