Reputation: 3442
Say that I have a function, dummy
, with 2 arguments. The arguments can have default values when not supplied in function call. But how do I know is an arguments is not supplied?
I know I can use nargin
, like this
function dummy(arg1, arg2)
if nargin < 2
arg2 = 0;
end
if nargin < 1
arg1 = 0;
end
% function body
I want to know whether I can check whether an arguments is supplied based on the argument name? Something like supplied(arg2) == false
.
I ask this because, sometimes I want to add new arguments at the front of the argument list (as it may not have a default value), and then I have to change all the if nargin ...
. If I can check by name, nothing has to be changed.
Upvotes: 41
Views: 33209
Reputation: 16065
I always do like that:
if ~exist('arg1','var')
arg1=0;
end
As said by @Andrey, with this solution you can change the number/order of the arguments of the function, without changing the code. This is not the case with the nargin
solution.
As said by @yuk, if you want to allow to skip arguments you can do:
if ~exist('arg1','var') || isempty(arg1)
arg1=arg1DefaultValue;
end
Upvotes: 71