在同一个类的对象列表上调用方法

时间:2012-03-27 14:25:33

标签: matlab

是否可以调用列表中所有对象的类方法? 例如:

    %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 个答案:

答案 0 :(得分:1)

如果您使用arrayfun()cellfun()structfun(),则可以执行此操作,具体取决于“列表”的含义。

我们假设它是一个数组(矩阵),你可以做

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

迭代my_objects并为每个包含的对象调用obj.myfunc(42)

答案 1 :(得分:0)

可能没有您想要的那么优雅,但是您可以遍历列表,依次引用每个对象,然后通过引用有条件地执行操作吗?

for iObj = 1:length(my_objects)
   anObj = my_objects(iObj)
   if (predicate(anObj))
      anObj.my_func(42);
   end
end