Programming with MATLAB | ![]() ![]() |
株式subsasgnメソッド
subsasgn
メソッドは、数字のインデックス機能や構造体フィールド名インデックス機能を使って株式オブジェクトに含まれるデータを変更することができます。MATLABは、代入ステートメント(A(i)
= val
, A{i} = val
,または、A.fieldname = val
)を実行するときに、subsasgn
を呼びます。
function s = subsasgn(s,index,val
)
% SUBSASGN 株式オブジェクト用にインデックス代入を定義
fc = fieldcount(s.asset);
switch index.type
case '()'
if (index.subs{:} <= fc)
s.asset = subsasgn(s.asset,index,val);
else
switch index.subs{:}-fc
case 1
s.num_shares = val;
case 2
s.share_price = val;
otherwise
error(['Index must be in the range 1 to ',num2str(fc + 2)])
end
end
case '.'
switch index.subs
case 'num_shares'
s.num_shares = val;
case 'share_price'
s.share_price = val;
otherwise
s.asset = subsasgn(s.asset,index,val);
end
end
外側のswitch
ステートメントは、インデックスが数字かフィールド名かを決定します。
fieldcount
資産メソッドは、資産構造体の中にいくつのフィールドが存在しているかを決めます。そして、if
ステートメントは、1
からfieldcount
までのインデックスに対して資産subsasgn
メソッドを呼びます。これらのメソッドの詳細に対する詳細は、資産fieldcountメソッドと資産subsasgnメソッドを参照してください。
fieldcount
で戻される数字よりも大きい数値インデックスは、内側のswitch
ステートメントにより取り扱われ、インデックス値を株式構造体の中の適切なフィールドに射影します。
フィールド名のインデックスは、num_shares
やshare_price
とは異なるフィールドが資産フィールドであると仮定します。これにより、子メソッドにより資産フィールドの知識が必要なくなります。資産subsasgn
メソッドは、フィールド名のエラーチェックも行います。
subsasgn
メソッドは、二つの手法を使って株式オブジェクトデータ構造体に値を代入することができます。たとえば、つぎの株式オブジェクトを仮定します。
s = stock('XYZ',100,25)
つぎのステートメントのどちらかを使って、descriptor
フィールドを変更できます。
s(1) = 'ABC';
s.descriptor = 'ABC';
MATLABでの代入ステートメントに関する一般的な情報については、subsasgn
を参照してください。
![]() |
株式subsrefメソッド | 株式displayメソッド | ![]() |