Programming and Data Types | ![]() ![]() |
メソッド内でのオブジェクトのインデックス付け
サブスクリプトを使ったリファレンスがクラス内で作られた場合、
MATLABは、組み込み関数subsref
を使って、メソッド自体のクラス内のデータにアクセスします。メソッドが、他のクラスからデータにアクセスすると、MATLABはそのクラス内の多重定義されたsubsref
関数を呼び出します。サブスクリプトの代入とsubsasgn
にも同じことがいえます。
次の例題は、employee
クラスで定義されているメソッドtestref
を示します。このメソッドは、それ自体のクラスのオブジェクト内のaddress
フィールドを参照します。これを行うために、MATLABは組み込み関数subsref
を使います。また、別のクラスの同じフィールドを、そのクラスの多重定義されたsubsref
関数を使って参照します。
% ---- EMPLOYEE class method: testref.m ---- function testref(myclass,otherclass) myclass.address % 組み込みsubsrefを使用 otherclass.address % 多重定義されたsubsrefを使用
例題では、employee
オブジェクトとcompany
オブジェクトを作成します。
empl = employee('Johnson','Chicago'); comp = company('The MathWorks','Natick');
employee
クラスメソッドtestref
が呼び出されます。
MATLABは、メソッド自体のクラスの外のデータにアクセスする時のみ、多重定義されたsubsref
を使います。
testref(empl,comp) ans = % 組み込みsubsrefの呼び出し Chicago ans = % @company\subsrefの呼び出し Executing @company\subsref ... Natick
![]() |
サブスクリプトを使った代入 | オブジェクトに対して、endインデックスの定義 | ![]() |