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')

+1

+1'value = getfield(obj,'foo')'在这种情况下。 – petrichor

cellfun(@(prop) obj.(prop), properties(obj), 'UniformOutput', false) 
+0

幸运的是,'getfield'解决了这个问题,并且有点不那么冗长;) –

+0

'getfield'很好,但'obj。(propname)'是“现代”的方式。我只是在'cellfun'中做这个事情来展示如何在一次调用中获得所有的属性。 – Edric

+0

啊,我明白了。在阅读Kavkas回答后,它更清晰。谢谢! –

您可以使用:

obj = myclass(); 
propName = 'foo'; 
propValue = obj.(propName); 

欲了解更多信息,请参阅Generating Field Names from VariablesDot-Parentheses