11.7 Ignoring Arguments

Last-modified: 2025-03-22 (土) 21:25:16

11.7 引数を無視する

正式な引数リストでは、名前の代わりに ダミーのプレースホルダーを使用できます 。これは、対応する引数値が無視され、どの変数にも保存されないことを示します。

 function val = pick2nd (~, arg2)
 val = arg2;
endfunction

narginこの宣言を使用しても の値は影響を受けません。

戻り引数も同じ構文を使用して無視できます。たとえば、sort 関数は、ソートされた値と、ソートされた出力となる元の入力のインデックス ベクトルの両方を返します。2 番目の出力を無視するのは簡単です。複数の出力を要求しないでください。ただし、最初の出力を無視して 2 番目の出力だけを計算するには、プレース~ ホルダーを使用する必要があります。

x = [2, 3, 1];
[s, i] = sort (x)
⇒
s =
  1   2   3
i =
  3   1   2
[~, i] = sort (x)
⇒
i =
  3   1   2

プレースホルダーを使用する場合~、出力引数を区切るために空白ではなくコンマを使用する必要があります。そうしないと、インタープリターは~論理否定演算子として認識します。

[~ i] = sort (x)
parse error:
 invalid left hand side of assignment

関数は、無視された出力を利用して、実行される計算の数を減らすことができます。これを行うには、isargout関数を使用して、出力引数が必要かどうかを照会します。例:

function [out1, out2] = long_function (x, y, z)
 if (isargout (1))
   ## Long calculation
   ...
   out1 = result;
 endif
 ...
endfunction

: tf = isargout (k)

関数内で、引数 k が出力時に変数に割り当てられるかどうかを示す論理値を返します。

結果が false の場合、引数は関数呼び出し中にチルダ (~) 特殊出力引数の使用により無視されています。関数は、isargout不要な出力に対して不要な計算を実行することを避けるために使用できます。

kが範囲外の場合1:max (nargout)、関数は false を返します。k は配列である可能性があり、その場合、関数は要素ごとに動作し、論理配列が返されます。最上位レベルでは、 isargoutエラーが返されます。
See also: nargout, varargout, nthargout.