11.5 Variable-length Return Lists

Last-modified: 2025-03-22 (土) 21:23:56

11.5 可変長の戻りリスト

特殊なパラメータ名で使用される構文に類似した構文を使用して、関数から可変数の出力引数を返すことができますvarargin。関数が可変数の出力引数を返すようにするには、特殊な出力パラメータ名 をvarargout使用します。 と同様にvarargin、varargoutは要求された出力引数を含むセル配列です。

例として、次の関数は最初の出力引数を 1 に設定し、2 番目の引数を 2 などに設定します。

function varargout = one_to_n ()
 for i = 1:nargout
   varargout{i} = i;
 endfor
endfunction

この関数が呼び出されると、次のような値を返します。

[a, b, c] = one_to_n ()
    ⇒ a =  1
    ⇒ b =  2
    ⇒ c =  3

varargin( ) が入力 (出力) パラメータ リストの最後の要素として表示されない場合はvarargout、特別なものではなく、他のパラメータ名と同じように処理されます。

: [r1, r2, …, rn] = deal (a)

: [r1, r2, …, rn] = deal (a1, a2, …, an)

入力パラメータを対応する出力パラメータにコピーします。

入力パラメータが 1 つだけ指定されている場合、その値は各出力にコピーされます。

例えば、

[a, b, c] = deal (x, y, z);

は以下と同等である

a = x;
b = y;
c = z;

そして

[a, b, c] = deal (x);
is equivalent to
a = b = c = x;

プログラミング ノート:dealは、セル配列または構造体から派生したコンマ区切りのリストでよく使用されます。インタープリタは関数呼び出しのオーバーヘッドなしで同じアクションを実行できるため、これは不要です。例:

c = {[1 2], "Three", 4};
[x, y, z] = c{:}
⇒
  x =
     1   2
  y = Three
  z =  4

See also: cell2struct, struct2cell, repmat.