MATLAB函数重载

函数重载

  • 在 MATLAB 中,函数重载不能像 C++ 一样通过不同的参数类型进行重载,而要在函数体内实现。
  • 简单的说就是“伪重载”,用 if 判断,当输入为什么时怎么样。

nargin

  • nargin 为调用函数时输入的参数个数
  • 在 MATLAB 中,不需要定义时的参数与调用时的参数个数相同,即定义参数(x,y)但是调用时可以只输入参数 x
  • 特别注意在类的方法中,obj 参数虽然在调用时并不用写,但是也算一个参数

varargin

  • 输入的参数可以只用一个 varargin 表示,然后调用时输入的参数都在这个 varargin 元胞数组中,用 varargin{1} 即可获得第一个输入参数
  • 注意在类的方法中,如果用 对象名.方法名(参数) 调用,varargin 第一个参数是这个对象而不是我们输入的第一个参数
classdef Point2D < handle
    properties
        x;
        y;
    end   
    methods       
        function obj = Point2D(x0,y0)
            obj.x = x0;
            obj.y = y0;
        end
        function moveTo(varargin)
            disp(varargin)
            disp(varargin{1})
        end
    end
end

在这里插入图片描述

  • varargin 可以出现在已有参数的末尾,例如上面这个例子,在类的方法中我们肯定会用到 obj 这个参数,所以我们可以将其单独拿出来。
function moveTo(obj,varargin)
	if nargin == 1
		obj.x = 0;
		obj.y = 0;
	elseif nargin == 2
		obj.x = varargin{1};
		obj.y = 0;
	elseif nargin == 3
		obj.x = varargin{1};
		obj.y = varargin{2};
	end
	disp(nargin)
	disp(varargin)
end

在这里插入图片描述

nargout、varargout

同理,nargout 表示输出的参数个数,varargout 表示输出,用于重载输出。

猜你喜欢

转载自blog.csdn.net/qq_43575267/article/details/93753586