首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中适当地使用重载大小()方法/操作符

如何在Matlab中适当地使用重载大小()方法/操作符
EN

Stack Overflow用户
提问于 2015-05-12 12:45:16
回答 1查看 239关注 0票数 4

我有一些关于财产val的课程

代码语言:javascript
复制
classdef SomeClass < handle

properties
   val;
end
methods
    function sz = size(this,varargin)
        sz = builtin('size',this.val,varargin{:});
    end;
end
end

据推测,如果将类SomeClass定义为矩阵,那么它应该是重载该方法以获得适当大小的适当方法。瓦尔是一个矩阵。任务就像

代码语言:javascript
复制
a = size(b) % b is SomeClass object

然而,工程

代码语言:javascript
复制
[a,b] = size(b)

不会的。它会导致一个错误“过多的输出参数。”,而内置的方法大小为双(实际上是val )的方法使用这个语法。

有人能给我个提示吗。这个案子有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 14:44:50

正如爱国者在评论中提到的,使用varargout.

通过添加nargout,size方法可以实现如下:

代码语言:javascript
复制
function varargout = size(this,varargin)
    [varargout{1:nargout}] = builtin('size',this.val,varargin{:});
end

另外,由于val有一个使用重载大小方法的类的可能角情况,可以用直接调用size来替换内置的使用。

然而,这会带来更大的破坏风险,例如:

代码语言:javascript
复制
Obj = SomeClass();
Obj.val = Obj;
size(Obj);

会撞到一个无限的循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30191301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档