我有一些属性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)可以使用此语法.
任何人都可以给我一个提示.这种情况下的问题是什么?
最佳答案 正如patrik的评论中提到的那样使用varargout ……
通过添加nargout,size方法可以实现如下:
function varargout = size(this,varargin)
[varargout{1:nargout}] = builtin('size',this.val,varargin{:});
end
作为一个附注,由于val的可能角落情况具有使用重载大小方法的类,因此可以使用对大小的直接调用来替换内置的使用.
然而,这会带来更大的破坏风险,例如:
Obj = SomeClass();
Obj.val = Obj;
size(Obj);
会无限循环……