Main Content

nargout

関数の出力引数の数

説明

nargout は、現在実行中の関数の呼び出し時に指定された関数出力引数の数を返します。この構文は、関数の本体にだけ使用してください。

nargout(fun) は、関数 fun の定義内に現れる出力の数を返します。この関数がその定義に varargout を含む場合は、nargout は出力数の負の数値を返します。たとえば、関数 myFun が出力 yz、および varargout を宣言する場合、nargout('myFun')-3 を返します。

arguments 検証ブロックを使用する関数を fun が参照する場合、戻り値は関数定義内で非負の値として宣言した位置引数の数です。

すべて折りたたむ

subtract.m という名前のファイル内で、必要な場合にのみ 2 番目の戻り値 absdif を計算する関数を作成します。

type subtract.m
function [dif,absdif] = subtract(y,x)
    dif = y-x;
    if nargout > 1
        disp('Calculating absolute value')
        absdif = abs(dif);
    end
end

コマンド プロンプトで関数 subtract を呼び出し、1 つの戻り値を返します。

diff = subtract(42,13)
diff = 29

関数 subtract を再度呼び出し、2 つの戻り値を返します。

[dif,absdif] = subtract(2,5)
Calculating absolute value
dif = -3
absdif = 3

関数が返せる出力数を決定します。

上記の例で作成された関数 subtract は、その宣言ステートメントに 2 つの出力をもっています (difabsdif)。

fun = @subtract;
nargout(fun)
ans = 2

varargout を使用する関数が返せる出力数を決定します。

mySize.m というファイルに、関数 size からの次元のベクトルと個々の次元を varargout を使用して返す関数を作成します。

type mySize.m
function [sizeVector,varargout] = mySize(x)
    sizeVector = size(x);
    varargout = cell(1,nargout-1);
    for k = 1:length(varargout)
        varargout{k} = sizeVector(k);
    end
end

mySize が返せる出力数をクエリします。

fun = 'mySize';
nargout(fun)
ans = -2

マイナス記号は、2 番目の出力が varargout であることを示します。関数 mySize は、不確定数の追加出力を返すことができます。

入力引数

すべて折りたたむ

nargout が定義から出力引数の数を返す対象の関数。関数ハンドル、文字ベクトル、または string スカラーとして指定します。

例: @rand

例: 'sortrows'

データ型: char | function_handle

ヒント

  • if ステートメントなどの式の一部として関数を使用した場合、MATLAB® は 1 つの出力引数を指定してその関数を呼び出します。そのため、関数 nargout は式の内部で 1 を返します。

  • 関数内に値が 0 の nargout が存在するか確認する際に出力の値を指定すると、MATLAB は ans に値を設定します。しかし、nargout を確認して、出力の値は指定しない場合、MATLAB は ans を変更しません。

拡張機能

バージョン履歴

R2006a より前に導入