【发布时间】:2019-01-14 13:39:24
【问题描述】:
在我们的 MATLAB 代码中,我们经常使用 dynamic field references,它们非常棒。我们有许多具有不同字段集的不同数据结构,因此只需使用struct.('field') 表示法就可以更轻松地访问其中任何一个,而无需使用eval 语句。
但是,我们遇到的问题是,其中许多结构都有多个层次,而且我们并不总是知道需要深入到结构中。理想情况下,我们希望能够在不使用 eval 语句的情况下访问它们,可能类似于
struct.('field.field2.field3')
有没有办法使用内置功能动态访问深度未知的结构?还是我们必须创建一个自定义函数来访问我们所有的结构?
【问题讨论】:
-
但是
struct.('field.field2.field3')你知道深度吗?还是struct.('unknown_amount_of_variables.desired_field')? -
或者您在寻找
struct.('field').('field2').('field3')吗? -
@AnderBiguri 它最接近
struct.('unknown_amount_of_variables.desired_field')。 -
"[Dynamic field names] are pretty wonderful" - 这是非常主观的,从性能、代码可读性、维护或健壮性的角度来看,通常不是这样......
-
@AnderBiguri 我收到了一个字符串,它可能是
field1.desiredField或field1.field2.desiredField或field1.<more levels>.desiredField。我会确切地知道该领域的位置。我试图弄清楚是否有一个内置函数可以让我动态访问该字段而无需使用eval或必须自己解析和循环所有内容。