在matlab中向对象动态添加字段

Mar*_*arc 5 oop matlab

假设我在类文件中定义了MATLAB对象

classdef foo

   properties
      bar
   end

end
Run Code Online (Sandbox Code Playgroud)

我创建了一个foo对象

myfoo = foo();
Run Code Online (Sandbox Code Playgroud)

现在我想动态地向foo添加另一个字段.我想要的是

myfoo.newfield = 42;
Run Code Online (Sandbox Code Playgroud)

但这会引发错误.

我知道有一种方法可以动态地将字段/属性添加到MATLAB对象中,但我无法记住它或在帮助中轻松找到它.有谁知道语法?

Mar*_*arc 6

好的,找到了.但它不是通用的,只有dynamicprops类的子类实现它.这是我记得遇到的.所以我怀疑这个问题的一般答案是你不能这样做.

任何作为dynamicprops类(它本身是句柄类的子类)的子类的类都可以使用addprop方法定义动态属性.语法是:

P = addprop(H,'PropertyName')
Run Code Online (Sandbox Code Playgroud)

  • 在6月11日的评论中,你会问"通过动态添加字段[?]你输了什么"有一件事是错误检查 - 通常,如果你有一个Circle对象,你真的*不*想要分配一个(哦,让我们说)"温度." 如果你写这样的代码... x = Circle(); ...许多代码,函数调用等... x.temperature = 98.6; 可能是你在某个地方犯了错误.因此,查看DYNAMICPROPS类的一种方法是说,"嘿,不要在以后错误地检查这个对象.如果我分配给一个坏的'属性,'相信我,我知道我在做什么. " 无论你是否想要这样做,由你决定. (2认同)