【问题标题】:dynamic remove or add fields in a structure在结构中动态删除或添加字段
【发布时间】:2012-06-25 01:25:51
【问题描述】:

如何从文件中读取连续的结构,当它们具有不同的字段时,并为每个结构创建适当的字段(标题:值)?我是初学者。我认为这是关于在读取 i-th 结构时动态添加新字段并从 i-1 结构中动态删除字段,在读取结构 i 后仍然为空。但是我以前不知道所有字段的名称怎么能做到呢?为此,我在文档和论坛中都找不到示例。

谢谢!

【问题讨论】:

    标签: matlab dynamic structure field


    【解决方案1】:

    如果某些字段出现在每个对象中,请将它们放在您的数组具有实例的公共结构中。对于变量字段,在主结构中创建一个字段“变量”或其他内容,然后在该结构动态分配字段名称和值。例如,您的结构可能是:

    a.name = 'Name1';
    a.value = 'Value1';
    a.variable.price = 50;
    
    
    b.name = 'Name2';
    b.value = 'Value2';
    b.variable.year = 1996;
    
    data(1) = a; data(2) = b;
    

    其中每个对象都有“名称”和“价格”字段,对象a 有价格字段但没有年份字段,对象b 有年份字段但没有价格字段。

    这适用于您要读取的数据类型。

    【讨论】:

    • 感谢您的好主意!然而这里的问题是,我可能不知道一个结构有多少这样的特定字段,所以价格可变,但可能更多。那该怎么办?如何从这个文件中动态读取它们,然后在读取具有新的特定字段/变量的新结构时如何覆盖/删除旧的?
    • 这应该不是问题 - 您可以在“变量”字段中放置任意数量的字段 - 您可以说 a.variable.price、a.variable.id、a.variable .size 和任意数量的此类子字段。本质上,您的主要结构保持不变,因此您不必覆盖任何内容。
    • 是的,我明白了。所以我可以创建结构数组(a 和 b)并使用字段名启动这些结构:名称、值、变量。然后我可以在文件中找到合适的单词,索引它们,使用正则表达式取出我想要的。但我不知道的是:如何从子结构变量中动态读取 - 我不知道那里的字段名称和数量,也不知道这些字段的值。我正在考虑在循环内重复与“外部”结构相同的过程,但由于我不知道字段,不像我在外部结构中所做的那样......我无法创建一个空结构。
    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 2019-04-19
    • 1970-01-01
    • 2016-10-20
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多