ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

関数の優先順位

このトピックでは、現在のスコープに同じ名前の関数が複数存在する場合、MATLAB® が関数の呼び出しをどのように判定するのかについて説明します。現在のスコープには、現在のファイル、現在実行中の関数を基準とするオプションのプライベート サブフォルダー、現在のフォルダーおよび MATLAB パスが含まれます。

MATLAB では次の優先順位が使用されます。

  1. 変数

    MATLAB では、名前が関数に一致すると見なす前に、現在のワークスペース内でその名前をもつ変数がないかどうかをチェックします。

    メモ

    関数と同じ名前をもつ変数を作成した場合、その変数がメモリからクリアされるまで MATLAB ではその関数を実行できません。

  2. インポートされたパッケージ クラスと関数

    パッケージ関数は特定のフォルダーに関連付けられます。関数 import を使用してパッケージ関数をインポートする場合、これは同じ名前をもつその他すべての関数より優先されます。

  3. 現在の関数内の入れ子関数

  4. 現在のファイル内のローカル関数

  5. プライベート関数

    "プライベート" 関数は、現在実行中のファイルのフォルダーのすぐ下にある private というサブフォルダーに含まれる関数です。

  6. オブジェクト関数

    オブジェクト関数は、その入力引数リストの特定のオブジェクトのクラスを受け入れます。同じ名前をもつ複数のオブジェクト関数がある場合、MATLAB は入力引数のクラスをチェックして、使用する関数を決定します。

  7. @ フォルダー内のクラス コンストラクター

    MATLAB では、クラス コンストラクターを使用してさまざまなオブジェクト (timeseriesaudioplayer など) が作成されます。また、オブジェクト指向プログラミングによって独自のクラスを定義することもできます。たとえば、クラス フォルダー @polynom とコンストラクター関数 @polynom/polynom.m を作成した場合、そのコンストラクターはパス上の任意の場所にある polynom.m という名前の他の関数よりも優先されます。

  8. 読み込まれた Simulink® モデル

  9. 現在のフォルダー内の関数

  10. パス上の他の部分にある関数 (出現順)

同じフォルダー内にある関数の優先順位を決める場合、MATLAB では次の順序でファイルの種類を検討します。

  1. 組み込み関数

  2. MEX 関数

  3. 読み込まれていない Simulink モデル ファイル (次のファイル タイプ順):

    1. SLX ファイル

    2. MDL ファイル

  4. MATLAB App Designer を使用して作成されたアプリ ファイル (.mlapp)

  5. .mlx 拡張子を伴うプログラム ファイル

  6. P ファイル (.p 拡張子を伴うエンコードされたプログラム ファイル)

  7. .m 拡張子を伴うプログラム ファイル

たとえば、MATLAB で同じフォルダー内に同じ名前をもつ .m ファイルと P ファイルが検出された場合は、P ファイルが使用されます。P ファイルは自動再生されないため、プログラム ファイルを編集する際は必ず P ファイルを再生してください。

特定の入力に対して MATLAB で呼び出される関数を指定するには、関数 which の呼び出しにおいて関数名と入力を指定します。

関連するトピック