Аргументы функций, имеющие значения по умолчанию, удобно располагать в конце списка аргументов. Например, пусть задана функция f
от трех аргументов arg1
, arg2
и arg3
, причем arg3
может иметь заданное по умолчанию значение. Реализуется это так:
function f(arg1,arg2,arg3)
if nargin < 3
arg3 = 'значение по умолчанию';
end
end
Здесь nargin
-- встроенная переменная, равная числу аргументов в списке входных параметров (Number of INput ARGuments) при данном вызове функции
f(3,5,11) % nargin равно 3
f(3,5) % nargin равно 2
Итак, если число аргументов при вызове функции меньше 3, то "недостающий" аргумент arg3
принимает 'значение по умолчанию'
.
Заметим, что при таком подходе располагать аргументы со значениями по умолчанию в конце списка аргументов не обязательно, а только удобно. Ничто не мешает нам придать значение по умолчанию, допустим, первому аргументу. Возможен и другой способ создания "дефолтных" аргументов, когда помещать их в конце списка аргументов уже обязательно. Способ этот использует список входных аргументов varargin
.
function f(arg1,arg2,varargin)
x = 1; y = 2;
if nargin > 2, x = varargin{1}; end
if nargin > 3, y = varargin{2}; end
end
Список varargin
(Variable-length input argument list) -- переменной длины и реализован как массив ячеек, поэтому обращение к его элементам выполняется с помощью фигурных скобок {}
. Если функция вызвана с числом аргументов, большим 2-х, то переменная x
принимает значение первого аргумента из списка "добавочных" аргументов varargin
, а если аргументов больше 3-х, то y
принимает значение второго аргумента из varargin
и т.д. Выглядит это так:
f(3,5) % x = 1; y = 2;
f(3,5,-3) % x =-3; y = 2;
f(3,5,-3,0) % x =-3; y = 0;
Комментарии
comments powered by Disqus