我有一个对象数组,都是同一个类。 是否可以一次将一个函数(在类的methods部分中定义)应用于数组中的所有对象? 例如,类定义是:
classdef myClass
properties
x=0;
end
methods
function obj=plus1(obj)
obj.x=obj.x+1;
end
end
end
现在我可以创建一个类myClass的对象A:
A=myClass;
并应用方法plus1:
A=A.plus1;
但是,如果我创建了同一个类的对象数组:
A(1,10)=myClass;
是否可以同时将'plus1'应用于A的10个对象?
类似的东西:
A(:)=A(:).plus1;
谢谢你们:)
答案 0 :(得分:1)
您可以使用arrayfun
>> A = arrayfun( @(x) x.plus1, A );
答案 1 :(得分:1)
只要为对象数组定义方法plus1
,它就可以工作:
methods
function obj=plus1(objList)
for obj = objList(:)'
obj.x=obj.x+1;
end
end
end
现在即使A = plus1(A)
是一个对象数组,您也可以调用A=A.plus1
或A
。