メインコンテンツ

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

関数への名前空間メンバーのインポート

関数の内部で名前空間メンバーを参照するときは、名前空間メンバーを関数にインポートすることで、それらへのアクセスを簡略化できます。いったんコードをインポートすると、名前空間の名前を使用する必要はなくなります。

メモ

ここで使用している名前空間の名前とメンバーは、あくまで例として示したものです。これらは MATLAB® インストールには含まれていません。機能を試すには、これらのフォルダーとコードを独自のパスで定義してください。

クラス、名前空間関数、静的メソッドのインポート

たとえば、import コマンドを使用して名前空間 mynamesp から MyClass をインポートします。これにより、関数の内部で MyClass を名前空間の名前なしで参照できるようになります。

function exampleFunction
   import mynamesp.MyClass 
   obj = MyClass(arg,...);                   % call MyClass constructor
   obj.Prop = MyClass.staticMethod(arg,...); % call MyClass static method
end

以下の例に示すとおり、名前空間関数と静的メソッドにも同様の手順が有効です。関数にコードをインポートすることで、名前空間なしでコードを呼び出せるようになります。

function myFuncA
   import mynamesp.myFunction 
   myFunction(arg,...); % call imported namespace function
end
function myFuncB
   import mynamesp.MyClass.myStaticMethod 
   myStaticMethod(arg,...); % call static method
end

mynamesp.* の構文を使用すると、名前空間にあるすべてのコードをインポートできます。ただし、名前が競合している恐れがあるため、使用を控えたほうが良いでしょう。詳細については、同じ名前の名前空間メンバーのインポートを参照してください。

同じ名前の名前空間メンバーのインポート

名前空間メンバーをインポートするときは名前の競合に注意してください。たとえば、次のフォルダー階層には、同じ名前の timedata という名前空間関数とクラス メソッドが含まれています。

+mynamesp/timedata.m           % namespace function
+mynamesp/@MyClass/MyClass.m   % class definition file
+mynamesp/@MyClass/timedata.m  % class method

名前空間をインポートし、MyClass のインスタンスで timedata を呼び出してみます。

import mynamesp.*
myobj = MyClass;
timedata(myobj)

ドット構文ではなく関数構文を使用して timedata を呼び出すと、インポートされた関数が先に MATLAB で検出されるため、名前空間関数が呼び出されます。

インポート リストの消去

関数ワークスペースからインポート リストを消去することはできません。ただし、clear import を使用してベース ワークスペースを消去できます。

参考

トピック