new 演算子

EGL new 演算子を使用して、指定した型のストレージを動的に作成します。参照型変数を作成する場合、new はストレージへの参照を作成するか、ストレージ自体を作成します。

new 演算子内で値の設定ブロックを指定することができます。 値の設定ブロックは NULL 可能な変数に対しては自動的に NULL フラグをオフにする点に注意してください。詳しくは、値の設定ブロックを参照してください。 例えば、このトピック内の『new 演算子を使用する場合』を参照してください。

構文

new 文の構文図
partName
EGL パーツの名前。

new 演算子を使用する場合

new 演算子の効果的に使用するためには、この演算子を名前を割り当てずにストレージを作成する場合に使用すると最も効果的です。次の例では、関数は辞書をそのパラメーターとして扱います。
func( new Dictionary{ key1 = 3, key2 = "Hello", key3 = false } );
次の例では、レコードには他の種類のレコードの配列であるフィールドが含まれます。この場合、new 演算子を使用する必要があります。
record CustomerArray
	myCustomers CustomerRec[] = 
    [ new CustomerRec { idNum = 101 }, 
      new CustomerRec { idNum = 102 } ];
end

代わりに、CustomerRec 変数を宣言して、配列内に入れることはできません。レコードのイニシャライザーは、そのレコード内のフィールド以外の変数にアクセスすることができません。

以下の方法で、変数宣言で new 演算子を使用することができます。
myInt INT = new INT;
この宣言を使用しても利点はなく、以下のような標準的な宣言と比較して重要な欠点が 1 つあります。
myInt INT;

new 演算子を使用するとき、ストレージは 2 度予約されます。最初に、代入の左側で INT のストレージが作成され、myInt という名前が付けられます。次に、new 演算子により、2 番目の INT が作成され、その値を 1 番目に代入します。2 番目の INT を再び使用することはありません。

以下の宣言を使用して、初期値が NULL でない NULL 可能変数を作成します (疑問符 (?) により指定)。
myInt INT? = new INT;
等式の左側により、NULL 可能変数が作成されます。new 演算子により、NULL 不可の INT が作成され、その値を 1 番目の INT に代入します。 同じ効果が得られますが、以下の行を使用すると単一変数が作成されます。
myInt INT?{};

フィードバック