假设我有一个带有2个参数的函数dummy
。在函数调用中未提供时,参数可以具有默认值。但我怎么知道是不提供参数?
我知道我可以使用nargin
,就像这样
function dummy(arg1, arg2)
if nargin < 2
arg2 = 0;
end
if nargin < 1
arg1 = 0;
end
% function body
我想知道是否可以根据参数名称检查是否提供了参数?类似于supplied(arg2) == false
。
我问这个是因为,有时我想在参数列表的前面添加新参数(因为它可能没有默认值),然后我必须更改所有if nargin ...
。如果我可以按名称检查,则无需更改任何内容。
答案 0 :(得分:61)
我总是喜欢这样:
if ~exist('arg1','var')
arg1=0;
end
正如@Andrey所说,使用此解决方案,您可以更改函数参数的数量/顺序,而无需更改代码。 nargin
解决方案不是这种情况。
正如@yuk所说,如果你想允许跳过你可以做的参数:
if ~exist('arg1','var') || isempty(arg1)
arg1=arg1DefaultValue;
end