他の多くのプログラム言語と同様に、EGL では同じ型の変数を 配列にグループ化できます。 このトピックでは、EGL で配列を使用する場合の基礎について説明します。
myInts int[] = [1,2,3,4,5];
この場合の配列は、一連の 5 個の整変数となります。EGL では、配列に
番号が 1 から順に付けられます。つまりこの配列は、1 から 5 までの
番号が付けられた要素を持つことになります。myInts[1] = 5+5;
myInts[2] = 16;
myInts[3] = myInts[1] + myInts[2];
myStrings string[2];
myStrings {"Hello", "Goodbye"};
この構文では、中括弧 ({) は使用していますが、等号 (=) は使用していません。 これは assignment ステートメントではなく、 値を配列に代入して、配列のプロパティーであるかのように要素を扱う方式です。 この方式は、他の方式 (配列に対して配列リテラルを使用する方式) よりも、 実行時のパフォーマンスが優れています。
また、この方式が機能するのは、新規の値を受け入れるための 十分な数の要素が、配列の中括弧内にある場合のみとなります。EGL では、 要素の自動追加を行いません。このため、値の設定ブロックを使用して 要素に値を代入する前に、配列に対して開始長を指定するか、配列に要素を追加する 必要があります。
myBigInts bigint[];
myBigInts = [10,40];
この方式は、値の設定ブロックを使用する方式よりも、パフォーマンスが
やや低下します。これは、生成されたコードによって、変数用とリテラル用の
2 つの配列を作成する必要があるためです。myStringsInit string[] {"Hello", "Goodbye"};
myBigIntsInit bigint[] = [10, 40];
myDecimals decimal(10,2)[3] {55.43, 22.12, 4.34, CurrencySymbol = "$"};
配列リテラル方式を使用して開始値を指定する場合は、値の設定ブロックで
通常通りにプロパティーを設定できます。myBools boolean[3]{MaxSize = 5} = [true, false, true];
fiveInts int[5];
SysLib.writeStderr(fiveInts[1]); //「0」を書き込む
EGL が配列を初期化できるようにするために、コーディングにおいて、
配列の作成時に配列に対して開始長を指定することをお勧めします。要素の追加や削除は、後で
appendElement や removeElement などの配列関数を使用して、
いつでも実行できます。nullArray int[];
nullArray[2] = 5; //NullValueException!
nullArray.appendElement(5); //NullValueException!
nullArray {1,2,3}; //NullValueException!
この場合は、まず配列リテラルで配列を初期化する必要があります。
nullArray2 int[];
nullArray2 = [1,2,3];
nullArray2.appendElement(4);
emptyArray int[]{};
emptyArray.appendElement(5);
上記の例では、値の設定ブロックは空です。値の設定ブロックを使用して、
配列内に現存する数以上の要素を配列に代入することはできません。この配列は
要素を持っていないため、値の設定ブロックを値なしで使用する必要があります。smallIntArray int[2];
smallIntArray = [1,2,3,4,5];
smallStrArray string[2];
smallStrArray {"ab", "cd", "ef", "gh"};
//IndexOutOfBoundsException! 配列には、要素が 2 個しかありません。
配列についての詳細は、「EGL 言語解説書」の『配列』を参照してください。