主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

オブジェクト配列の初期化

コンストラクターの呼び出し

オブジェクトの配列の作成中,MATLAB®は,コンストラクターがオブジェクトの配列を作成しない場合でも,引数なしでクラスコンストラクターを呼び出すことができます。たとえば,次のクラスを定義するとします。

classdefSimpleValue属性价值结束方法函数obj = SimpleValue(v)值= v;结束结束结束

次のステートメントを実行して配列を作成します。

(7) = SimpleValue (7)
使用SimpleValue出错(第7行)输入参数不足。

このエラーが発生するのは,配列内の1から6までの要素を初期化するために,MATLABが引数なしでコンストラクターを呼び出すためです。

このクラスでは入力引数なしのコンストラクター構文をサポートしなければなりません。簡単な解決法は,输入参数个数をテストし,输入参数个数= = 0のときにコードを実行しなくてもエラーとならないようにします。

classdefSimpleValue属性价值结束方法函数obj = SimpleValue (v)如果Nargin > 0 obj。值= v;结束结束结束结束

クラス定義を次のように変更すると,上記の配列代入ステートメントがエラーなしで実行されます。

(7) = SimpleValue (7)
a = 1x7 SimpleValue数组的属性:Value

配列の要素に割り当てられた(7)オブジェクトは,コンストラクターに渡された入力引数をプロパティに割り当てられた値として使用します。

(7)
ans = simplvalue属性:Value: 7

MATLABは,要素(1, 1:6)に含まれるオブジェクトを入力引数なしで作成しました。プロパティの既定値は空[]です。たとえば,次のようになります。

(1)
ans = simplvaluewithproperties: Value: []

MATLABはSimpleValueコンストラクターを1回呼び出し,返されたオブジェクトを配列の各要素にコピーします。

オブジェクトのプロパティの初期値

MATLABでオブジェクト配列を初期化するために引数なしでコンストラクターが呼び出される場合には,次のいずれかの割り当てが行われます。

  • プロパティの定義で既定値が指定されている場合は,MATLABがこれらの値を割り当てます。

  • 入力引数がないときにコンストラクターが値を割り当てた場合は,これらの値が割り当てられます。

  • 上記のいずれも該当しない場合,MATLABはプロパティに空の双(つまり,[])を代入します。

関連するトピック