考虑以下MATLAB函数,该函数必须具有两个重载,其签名在参数和数据类型的数量方面是相同的:
bower_components
假设两个重载都只接受整数。所以没有办法猜出哪个过载是正确的。
请注意,此示例不能选择两个不同的函数。它们必须是相同功能的重载。
我想唯一的出路就是为其中一个重载添加一个额外的参数:
node_modules
这是解决问题的最佳方法吗?
答案 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