MATLAB:如何获得给定的属性名称的类属性的值
如果我有一个类定义为MATLAB:如何获得给定的属性名称的类属性的值
classdef myclass
properties
foo = 3;
bar = 7;
end
end
我想访问属性foo的我会写
obj = myclass()
obj.foo % Gives me 3
但是,如果我只有属性名称的字符串表示形式,并且不知道哪个属性,那我该怎么做呢?正如在下面的例子:
obj.someFunction('foo') % or
someFunction(obj, 'foo') % should both give me the value of obj.foo
我想要做的是有一个属性列表,遍历它并获取特定对象的值。 它似乎应该是可能的,但我没有在文档中找到它。
value = getfield(struct, 'field')
cellfun(@(prop) obj.(prop), properties(obj), 'UniformOutput', false)
幸运的是,'getfield'解决了这个问题,并且有点不那么冗长;) –
'getfield'很好,但'obj。(propname)'是“现代”的方式。我只是在'cellfun'中做这个事情来展示如何在一次调用中获得所有的属性。 – Edric
啊,我明白了。在阅读Kavkas回答后,它更清晰。谢谢! –
您可以使用:
obj = myclass();
propName = 'foo';
propValue = obj.(propName);
欲了解更多信息,请参阅Generating Field Names from Variables和Dot-Parentheses。
+1'value = getfield(obj,'foo')'在这种情况下。 – petrichor