Programming with MATLAB | ![]() ![]() |
subsrefとsubsasgnを使用したインデックス付きリファレンス
ユーザのクラスは、MATLABの中で新しいデータタイプを実現するものです。MATLABの組み込みのデータタイプと同じように、インデックス付きリファレンスを通してオブジェクトデータをアクセスできることは有益なことです。たとえば、A
がクラスdouble
の配列の場合、A(i)
は、A
のi
-番目の要素を戻します。
クラスの設計者として、あるオブジェクトに対するインデックスリファレンスが意味するものを決めることができます。たとえば、多項式オブジェクトを作成し、 それらのオブジェクトは、多項式の係数を含んでいるというクラスを定義するこ とを考えましょう。
p(3)
は、xの3乗の係数の値、または、x = 3での多項式の値、または、設計に依存して少し異なったもののいずれかを戻します。
2つのクラスメソッド、subsref
とsubsasgn
を作成することで、特別なクラスに対するインデックスの挙動を定義することができます。MATLABは、サブスクリプトを使ったリファレンス、または、代入がクラスから一つのオブジェクトの上に適用されると、これらのメソッドが呼ばれます。あるクラスに対して、これらのメソッドを定義しない場合、インデックス機能は、このクラスのオブジェクトに対して未定義となります。
一般に、オブジェクトのインデックス機能に対するルールは、構造体配列にイン デックス機能を適用する場合のルールと同じものになります。詳細は、"構造体とセル配列"を参照してください。
![]() |
setメソッドとgetメソッド | サブスクリプトを使ったリファレンスの取り扱い | ![]() |