Date Редакция Категория sci Теги matlab

Аргументы функций, имеющие значения по умолчанию, удобно располагать в конце списка аргументов. Например, пусть задана функция 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