使用相同签名重载功能的最佳方法是什么?

时间:2015-12-27 00:24:44

标签: matlab

考虑以下MATLAB函数,该函数必须具有两个重载,其签名在参数和数据类型的数量方面是相同的:

bower_components

假设两个重载都只接受整数。所以没有办法猜出哪个过载是正确的。

请注意,此示例不能选择两个不同的函数。它们必须是相同功能的重载。

我想唯一的出路就是为其中一个重载添加一个额外的参数:

node_modules

这是解决问题的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用varargin执行此操作。 varargin是用于指定函数可以接受多个输入的单元格数组。使用varargin{n}访问第n个输入(注意花括号)。因此,varargin用法的简单示例可以是:

function output = myFunction(varargin)
if length(varargin) == 1
    output = varargin{1}.^2;
elseif length(varargin) == 2
    if strcmp(varargin{2},'cube')
        output = varargin{1}.^3;
    end
else
    error('Too many input arguments')
end

上面的代码检查输入的数量。如果只有一个输入,则为平方,如果有两个输入,第二个输入为'cube',则第一个参数为立方体。如果有超过2个输入或零,则返回错误消息。

测试:

>> myFunction(5)

ans =

    25

>> myFunction(5,'cube')

ans =

   125