データ・パーツの配列

他の多くのプログラム言語と同様に、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];
また、以下のいずれかの方法を使用することで、配列に対して一度に複数の値を 代入することができます。 これらの 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 が配列を初期化できるようにするために、コーディングにおいて、 配列の作成時に配列に対して開始長を指定することをお勧めします。要素の追加や削除は、後で appendElementremoveElement などの配列関数を使用して、 いつでも実行できます。
ただし、配列に対して開始長を指定していない場合、配列は NULL として開始されるため、 配列内にアクセスの対象が存在しないことになります。
nullArray int[];
nullArray[2] = 5; //NullValueException!
nullArray.appendElement(5); //NullValueException!
nullArray {1,2,3}; //NullValueException!
この場合は、まず配列リテラルで配列を初期化する必要があります。
nullArray2 int[];
nullArray2 = [1,2,3];
nullArray2.appendElement(4);
あるいは、値の設定ブロックを使用して、NULL の配列を初期化することもできます。
emptyArray int[]{};
emptyArray.appendElement(5);
上記の例では、値の設定ブロックは空です。値の設定ブロックを使用して、 配列内に現存する数以上の要素を配列に代入することはできません。この配列は 要素を持っていないため、値の設定ブロックを値なしで使用する必要があります。
配列に対して、さらに長い配列リテラルを代入することによって、配列の長さを 伸ばすことができます。この場合は、短い配列が、より長い新規の配列で上書きされます。 以下の例では、5 つの要素を持つ配列リテラルを代入して、要素を 2 つしか持たない配列を 置き換えています。
smallIntArray int[2];
smallIntArray = [1,2,3,4,5];
ただし、値の設定ブロックを使用して、 配列内に現存する数以上の要素を配列に代入することはできません。
smallStrArray string[2];
smallStrArray {"ab", "cd", "ef", "gh"}; 
//IndexOutOfBoundsException! 配列には、要素が 2 個しかありません。

配列についての詳細は、「EGL 言語解説書」の『配列』を参照してください。


フィードバック