【发布时间】:2014-12-27 18:52:37
【问题描述】:
对于 (MEX) 函数调用,一次传递一个对象的多个属性会非常好。而不是foo(myObj.propA, myObj.propB),我想要foo(myObj.[propA,propB]之类的东西。
这可能吗?
使用结构可以使用getfield() 函数从多个字段中获取数据,例如:
getfield(myStruct, {index}, {'fieldA', 'fieldB'})
但不幸的是,以下尝试从对象中获取多个属性会导致错误(索引超出矩阵维度):
getfield(myObj, {index}, {'propA', 'propB'})
也许唯一的可能是编写一个返回多个输出参数的函数:
[varargout] = getProps(object,propnames)
for p=1:numel(propnames)
varargout{p} = object.(propnames{p});
end
但是,如果我以该函数作为输入调用另一个函数,例如sum(getProps(myObj,propnames)) 只传递了getProps 的第一个输出参数,我陷入了绝望。有没有其他办法?
【问题讨论】:
标签: matlab function oop properties