空配列
空配列の作成
空配列とは、要素はありませんが特定のクラスに属している配列です。すべての非抽象クラスは、クラスの空配列を作成する empty
という名前の静的メソッドをもちます。empty
メソッドを使用すると、出力配列の次元を指定できます。ただし、次元のうち少なくとも 1 つは 0
でなければなりません。たとえば、SimpleValue
クラスを以下のように定義します。
classdef SimpleValue properties Value end methods function obj = SimpleValue(v) if nargin > 0 obj.Value = v; end end end end
SimpleValue
クラスの 5 行 0 列の空配列を作成します。
ary = SimpleValue.empty(5,0)
ary = 5x0 SimpleValue array with properties: Value
引数なしで empty
を呼び出すと、0 x 0 の空配列を返します。
空配列への値の割り当て
空のオブジェクトは、配列のクラスを定義します。空でないオブジェクトを空の配列に割り当てるため、MATLAB® はクラス コンストラクターを呼び出して、他のすべての配列要素に対してクラスの既定のインスタンスを作成します。空でないオブジェクトを 1 つの配列に割り当てる場合は、すべての配列要素が空でないオブジェクトでなければなりません。
メモ
既定では、クラス コンストラクターは空のオブジェクトを返すことを避けなければなりません。
たとえば、オブジェクト配列の初期化の節で定義した SimpleValue
を使用して空配列を作成します。
ary = SimpleValue.empty(5,0); class(ary)
ans = SimpleValue
ary
はクラス SimpleValue
の配列です。ただし、この配列は空です。
ary(1)
Index exceeds matrix dimensions.
プロパティ値を割り当てようとすると、MATLAB によって SimpleClass
コンストラクターが呼び出され、配列が必要なサイズに拡張されます。
ary(5).Value = 7; ary(5).Value
ans = 7
ary(1).Value
ans = []
MATLAB は配列の 1 番目から 5 番目までの要素に、クラス コンストラクターを引数なしで呼び出して作成した SimpleValue
オブジェクトを入力します。次に、ary(5)
のオブジェクトに 7
というプロパティが割り当てられます。