このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ローカル関数
このトピックでは、"ローカル関数" という用語とローカル関数の作成および使用方法を説明します。
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
ローカル関数 mymean
と mymedian
は、入力リストの平均値と中央値を計算します。メイン関数 mystats
はリスト n
の長さを決定し、それをローカル関数に渡します。
ローカル関数はコマンド ラインや他のファイルの関数から呼び出すことはできませんが、ヘルプには、関数 help
を使ってアクセスできます。ファイルとローカル関数の両方の名前を指定し、>
文字で区切ります。
help mystats>mymean
mymean Example of a local function.
現在のファイルにあるローカル関数は、他のファイルの関数およびクラス メソッドより優先されます。つまり、あるプログラム ファイル内で関数またはメソッドを呼び出す場合、MATLAB はその関数がローカル関数かどうかを確認してから、他のメイン関数を検索します。したがって、別のファイルでオリジナルを保持しながら、特定の関数の別のバージョンを作成できます。
ローカル関数を含めたすべての関数は、ベース ワークスペースとは別の独自のワークスペースをもっています。ローカル関数は、ユーザーが引数として渡さない限り、他の関数が使用している変数にアクセスできません。逆に、"入れ子" 関数 (別の関数内に完全に含まれている関数) は自身を含む関数が使用している変数にアクセスできます。