вызов метода в списке объектов того же класса - PullRequest
0 голосов
/ 27 марта 2012

Можно ли вызвать метод класса для всех объектов в списке? Пример:

    %my_objects contains a list of instances of the same user matlab class
    my_objects(:).my_func(42);

Цель этого состоит в том, чтобы фильтровать индексы вместо использования ":" Пример:

    my_objects(1:10).my_func(42);

или

    my_objects(find(...)).my_func(42);

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Вы можете сделать это, если используете arrayfun(), cellfun() или structfun(), в зависимости от того, что означает «список».

Давайте предположим, что это массив (матрица), вы можете сделать

arrayfun(@(obj)obj.my_func(42), my_objects)

, который перебирает my_objects и вызывает obj.myfunc(42) для каждого из содержащихся объектов.

0 голосов
/ 27 марта 2012

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

for iObj = 1:length(my_objects)
   anObj = my_objects(iObj)
   if (predicate(anObj))
      anObj.my_func(42);
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...