在函数replace_me(v,a,b,c)
中,如果省略b
,我想将b,b
替换为c
。
我的代码是
if c == 0
b = [b b]
end
当我运行此代码时,它会给我下一个错误
没有足够的输入参数。
任何帮助。 提前谢谢
答案 0 :(得分:4)
在函数体中使用nargin
来检测输入的数量。对于您的具体情况:
function replace_me(v,a,b,c)
switch nargin
case 4
%// full case, do nothing
case 3
b = [b b];
otherwise
error('Invalid number of arguments');
end;
%// The rest of the code
end
请注意,在switch
语句之后,您不应再引用参数c
,因为在3个参数的情况下,对省略的输入的任何引用都将产生错误。这可能会让代码的维护者感到困惑(包括你自己,经过足够的时间)。也许这种方式更有意义,更强大:
function replace_me(v,a,b,c)
switch nargin
case 4
%// full case, do nothing
case 3
%// supply default value for c
c = b;
otherwise
error('Invalid number of arguments');
end;
%// The rest of the code
end
当然,这是否是你想要的是由你的评价(发布不提供太多细节)。
答案 1 :(得分:0)
在您的功能乞求时,您可以添加
if nargin == 3
c=b;
end