MATLAB: Как получить значение свойства класса по имени свойства - PullRequest
0 голосов
/ 30 ноября 2011

Если у меня есть класс, определенный как

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

Я хочу создать список свойств, выполнить итерацию по нему и получить значение для конкретного объекта.Кажется, что это должно быть возможно, но я не смог найти его в документации.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Вы можете использовать:

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

Для получения дополнительной информации см. Создание имен полей из переменных и Точечные скобки .

2 голосов
/ 30 ноября 2011

value = getfield(struct, 'field')

0 голосов
/ 30 ноября 2011
cellfun( @(prop) obj.(prop), properties(obj), 'UniformOutput', false )
...