2012-03-27 2 views
0

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

%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); 

ответ

1

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

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

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

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

0

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

for iObj = 1:length(my_objects) 
    anObj = my_objects(iObj) 
    if (predicate(anObj)) 
     anObj.my_func(42); 
    end 
end 
Смежные вопросы