varargin переменное число аргументов в списке входных аргументов

## Описание

Функция, чьим последним входным аргументом является `varargin`, может быть вызвана с бОльшим числом входных аргументов, чем указано в списке входных аргументов. Аргументы вызова, переданные внутрь в форме ключевого слова `varargin` затем могут быть получены внутри функции в списке с именем `varargin`.

Допустим, что ключевое слово `varargin` является `n`-ным аргументом в списке формальных входных аргументов, тогда, если функция вызывается с меньшим числом, чем `n-1`, входных аргументов, то список `varargin` не будет определён. Если же функция вызывается с `n-1` аргументами, то список `varargin` будет пустым списком.

`function y = ex(varargin)` может быть вызвана с любым числом аргументов. Внутри функции `ex` входные аргументы могут быть получены в `varargin(i)`, `i=1:length(varargin)`.

Если же это не последний аргумент функции, то `varargin` будет обычным именем входного аргумента без особого значения.

Общее число фактических входных аргументов даётся с помощью `argn(2)`.

## Примечание

Синтаксис именованных аргументов, такой как `foo(...,key=value)`, не совместим с использованием `varargin`. Причина в том, что имена (то есть ключи), связанные со значениями, не хранятся в списке `varargin`. Рассмотрим пример:

    function foo(varargin)
        disp([varargin(1),varargin(2)])
    endfunction

    --> foo(a=1, b=2)
     1.    2.
    --> foo(b=1, a=2)
     1.    2.

Результат одинаковый, но аргументы были переставлены.

## Примеры

    function exampl(a,varargin)
        [lhs,rhs]=argn(0)
        if rhs>=1 then
            disp(varargin)
        end
    endfunction

    exampl(1)
    exampl()
    exampl(1,2,3)
    l=list('a',%s,%t);
    exampl(1,l(2:3))

## Смотрите также

- varargout
- argn
- function
- list