gpt4 book ai didi

matlab - 如何在 Matlab 中正确重载 size() 方法/运算符

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:22 24 4
gpt4 key购买 nike

我有一些属性为 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)

没有。它会导致错误“输出参数过多”,而内置的 double 方法大小(实际上是 val)使用此语法。

谁能给我一个提示。这种情况下有什么问题?

最佳答案

正如 patrik 在评论中提到的,使用 varargout...
通过添加 nargout,size 方法可以按如下方式实现:

function varargout = size(this,varargin)
[varargout{1:nargout}] = builtin('size',this.val,varargin{:});
end

作为旁注,由于 val 的可能极端情况有一个使用重载 size 方法的类,内置函数的使用可以替换为直接调用 size .

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

Obj = SomeClass();
Obj.val = Obj;
size(Obj);

会进入无限循环...

关于matlab - 如何在 Matlab 中正确重载 size() 方法/运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com