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`とは互換性がありません. その理由は, 値に対応する名前(すなわち, keys) が `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