| 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インデックスの定義 |