如何检查函数调用中是否提供了参数?

时间:2011-12-21 13:22:27

标签: matlab

假设我有一个带有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 ...。如果我可以按名称检查,则无需更改任何内容。

1 个答案:

答案 0 :(得分:61)

我总是喜欢这样:

if ~exist('arg1','var')
  arg1=0;
end

正如@Andrey所说,使用此解决方案,您可以更改函数参数的数量/顺序,而无需更改代码。 nargin解决方案不是这种情况。

正如@yuk所说,如果你想允许跳过你可以做的参数:

if ~exist('arg1','var') || isempty(arg1)
  arg1=arg1DefaultValue;
end