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メソッド | ![]() |