Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ローカル関数

このトピックでは、"ローカル関数" という用語とローカル関数の作成および使用方法を説明します。

MATLAB® プログラム ファイルには複数の関数のコードを記述できます。関数ファイルでは、ファイル内の最初の関数はメイン関数と呼ばれます。この関数は他のファイルの関数から参照でき、コマンド ラインから呼び出すことができます。ファイル内のその他の関数はローカル関数と呼ばれ、メイン関数の後に任意の順序で配置できます。ローカル関数は、同じファイル内の他の関数からのみ参照できます。ローカル関数は、他のプログラミング言語でのサブルーチンに相当し、サブ関数と呼ばれることもあります。

R2016b では、スクリプト ファイルでもローカル関数を作成できます。ただし、これらはすべてスクリプト コードの最終行の後に配置しなければなりません。詳細については、スクリプトへの関数の追加を参照してください。

たとえば、メイン関数 mystats と 2 つのローカル関数 mymean および mymedian をもつ、mystats.m という関数ファイルを作成します。

function [avg, med] = mystats(x)
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);
end

function a = mymean(v,n)
% MYMEAN Example of a local function.

a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Another example of a local function.

w = sort(v);
if rem(n,2) == 1
    m = w((n + 1)/2);
else
    m = (w(n/2) + w(n/2 + 1))/2;
end
end

ローカル関数 mymeanmymedian は、入力リストの平均値と中央値を計算します。メイン関数 mystats はリスト n の長さを決定し、それをローカル関数に渡します。

ローカル関数はコマンド ラインや他のファイルの関数から呼び出すことはできませんが、ヘルプには、関数 help を使ってアクセスできます。ファイルとローカル関数の両方の名前を指定し、> 文字で区切ります。

help mystats>mymean
  mymean Example of a local function.

現在のファイルにあるローカル関数は、他のファイルの関数およびクラス メソッドより優先されます。つまり、あるプログラム ファイル内で関数またはメソッドを呼び出す場合、MATLAB はその関数がローカル関数かどうかを確認してから、他のメイン関数を検索します。したがって、別のファイルでオリジナルを保持しながら、特定の関数の別のバージョンを作成できます。

ローカル関数を含めたすべての関数は、ベース ワークスペースとは別の独自のワークスペースをもっています。ローカル関数は、ユーザーが引数として渡さない限り、他の関数が使用している変数にアクセスできません。逆に、"入れ子" 関数 (別の関数内に完全に含まれている関数) は自身を含む関数が使用している変数にアクセスできます。

参考

関連するトピック