Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check whether an argument is supplied in function call?

Tags:

matlab

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.

like image 918
fefe Avatar asked Dec 21 '11 13:12

fefe


People also ask

How do you check if a function has an argument?

To check if a parameter is provided to a function, use the typeof operator to check if the parameter is not equal to the string "undefined" , e.g. if (typeof param !== 'undefined') . If the condition is met, the parameter was provided to the function.

What is supplied by the argument of a function?

In mathematics, an argument of a function is a value provided to obtain the function's result. It is also called an independent variable.

Where do arguments appear in a call to a function?

Arguments are the values passed from a function call (i.e., they are the values appearing inside the parentheses of the call) and are sent into the function).

Which arguments are given in a function call?

During the function call, all arguments are given as positional arguments. Values passed through arguments are passed to parameters by their position.


Video Answer


1 Answers

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 
like image 59
Oli Avatar answered Sep 22 '22 04:09

Oli