このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
カスタマイズされたインデックス手法の引数の数
は,n
= numArgumentsFromSubscript (obj
,年代
,indexingContext
)subsasgn
への必要な入力数またはsubsref
からの必要な出力数を返します。
返されたインデックス式から出力される値の数や,コンマ区切りのリストに代入する値の数を記述するには,numArgumentsFromSubscript
をオーバーロードします。これは,“{}”
または“。”
インデックスで終了するインデックス式です。関数numArgumentsFromSubscript
を使用すると,次のような処理ができます。
インデックス式に使用されるインデックス演算とインデックスにアクセスする
インデックス演算が参照ステートメント,関数に渡された式,あるいは代入のどのコンテキストで処理されるかを判別する
クラスがnumArgumentsFromSubscript
をオーバーロードする場合,MATLAB®がこれを呼び出して,要素数が1より大きい場合にインデックス演算に使用される配列要素の数を判別します。たとえば,次の“。”
インデックス演算ではnumArgumentsFromSubscript
の呼び出しが行われます。
objArray.a
——ステートメント(声明
)で参照される要素の数
func (objArray.a)
——式で返される要素の数(表达式
)
[objArray。) = rhs
——コンマ区切りのリスト(赋值
)で代入される値の数
MATLABは,呼び出しコンテキストを使用してnumArgumentsFromSubscript
で返された値を適用するかどうかを判断します。numArgumentsFromSubscript
の実装方法によって,3種類のインデックス付けステートメントにそれぞれ異なる出力を提供できます。たとえば,numArgumentsFromSubscript
のこのオーバーロードでは次が行われます。
関数に渡されるインデックス式についてsubsref
からの出力引数の想定される数を変更します。
インデックス演算に必要な引数の数を判別するには,インデックス付けサブ構造体年代
を使用します。
函数n = numArgumentsFromSubscript (obj,年代,indexingContext)如果indexingContext == matlab.mixin.util.IndexingContext.Expression n = 1;其他的n =长度(s (1) .subs {:});结束结束
subsref
メソッドをvarargout
出力を使って実装し,MATLABが指定された出力引数の数を使用してこのメソッドを呼び出せるようにします。
函数varargout = subsref (obj,年代)...结束
オーバーロードされたsubsref
およびsubsasgn
からの結果を制御するには,元素个数
の代わりにnumArgumentsFromSubscript
をオーバーロードします。numArgumentsFromSubscript
をオーバーロードすることで,元素个数
のオーバーロードに起因するエラーを回避できます。