【发布时间】:2015-07-23 08:27:23
【问题描述】:
我有一些带有属性 val 的类
classdef SomeClass < handle
properties
val;
end
methods
function sz = size(this,varargin)
sz = builtin('size',this.val,varargin{:});
end;
end
end
如果它被定义为矩阵,那么它应该是重载此方法以获得适当大小的类 SomeClass 对象的正确方法,即。 val 是一个矩阵。像这样的作业
a = size(b) % b is SomeClass object
不过有效
[a,b] = size(b)
没有。它会导致错误“输出参数过多。”,而内置的双精度方法大小(实际上是 val)使用此语法。
谁能给我一个提示。在这种情况下有什么问题?
【问题讨论】:
-
方法
size只需要两个参数,size(var, dim)。此外,您定义的方法只允许一个输出参数。尝试将varagout用于可变输出参数。 -
@patrik 我完全同意
varargout... 但是大小也可以采用 1 个参数:例如size(var)varargin用法允许它仍然被调用 -
@RTL 你当然是对的。我只是认为由于
{:},用户希望在varargin中有多个变量。通常你可以有function varargout = size(this.val, dim), if nargin == 1, dim = 1; ...之类的东西,或者错误检查:if numel(varargin)>1, error('errMsg')。
标签: matlab size overloading operator-keyword