| Programming with MATLAB |
株式subsrefメソッド
subsrefメソッドは、株式クラスに対するサブスクリプトを使ったインデックスを定義します。この例題で、subsrefは、株式オブジェクトの数値インデックスや構造体フィールド名を使ったインデックスを使うことができます。
function b = subsref(s,index)
% SUBSREF 株式オブジェクト用にインデックス付けされたフィールド名を定義
fc = fieldcount(s.asset);
switch index.type
case '()'
if (index.subs{:} <= fc)
b = subsref(s.asset,index);
else
switch index.subs{:} - fc
case 1
b = s.num_shares;
case 2
b = s.share_price;
otherwise
error(['Index must be in the range 1 to ',num2str(fc + 2)])
end
end
case '.'
switch index.subs
case 'num_shares'
b = s.num_shares;
case 'share_price'
b = s.share_price;
otherwise
b = subsref(s.asset,index);
end
end
外側のswitchステートメントは、インデックスが数値かフィールド名かを決定するものです。
fieldcount資産メソッドは、資産構造体の中にどのくらいのフィールドがあるかを決めるもので、ifステーットメントは、1からfieldcountまでのインデックスに対して、資産subsref
メソッドを呼びます。これらのメソッドの記述については、資産fieldcountメソッド および資産subsref メソッドを参照してください。
fieldcountにより戻される数字より大きい数値インデックスは、内側のswitchステートメントで取り扱われます。これは、株式構造体の中で適切なフィールドにインデックス値を射影します。
フィールド名を使ったインデックスは、num_shares以外のフィールド名を想定しています。share_priceは資産フィールドで、それは子メソッドにより資産フィールドの知識に対する必要性をなくします。資産subsref
メソッドは、フィールド名のエラーチェックを行います。
このメソッドの実現に対する一般的な情報は、help
subsrefを参照してください。
| 株式setメソッド | 株式subsasgnメソッド |