我有一些关于财产val的课程
classdef SomeClass < handle
properties
val;
end
methods
function sz = size(this,varargin)
sz = builtin('size',this.val,varargin{:});
end;
end
end据推测,如果将类SomeClass定义为矩阵,那么它应该是重载该方法以获得适当大小的适当方法。瓦尔是一个矩阵。任务就像
a = size(b) % b is SomeClass object然而,工程
[a,b] = size(b)不会的。它会导致一个错误“过多的输出参数。”,而内置的方法大小为双(实际上是val )的方法使用这个语法。
有人能给我个提示吗。这个案子有什么问题?
发布于 2015-05-12 14:44:50
正如爱国者在评论中提到的,使用varargout.
通过添加nargout,size方法可以实现如下:
function varargout = size(this,varargin)
[varargout{1:nargout}] = builtin('size',this.val,varargin{:});
end另外,由于val有一个使用重载大小方法的类的可能角情况,可以用直接调用size来替换内置的使用。
然而,这会带来更大的破坏风险,例如:
Obj = SomeClass();
Obj.val = Obj;
size(Obj);会撞到一个无限的循环。
https://stackoverflow.com/questions/30191301
复制相似问题