Feldgruppen mit Datenabschnitten

EGL kann - wie viele andere Programmiersprachen auch - Variablen desselben Typs in Feldgruppen zusammenfassen. In diesem Abschnitt werden die Grundlagen der Verwendung von Feldgruppen in EGL behandelt.

Eine Feldgruppe ist eine geordnete Serie von Variablen desselben Typs. Sie können beispielsweise eine Feldgruppe aus ganzzahligen Variablen definieren:
myInts int[] = [1,2,3,4,5];
In diesem Fall besteht die Feldgruppe aus einer Serie von fünf ganzzahligen Variablen. In EGL beginnt die Nummerierung von Feldgruppen bei 1. Die Elemente in dieser Feldgruppe sind somit von 1 bis 5 nummeriert.
Sie können auf jede Ganzzahl in der Feldgruppe so zugreifen, als ob es sich um einzelne Variablen handeln würde. Hierzu geben Sie die Indexnummer der Ganzzahl in eckigen Klammern an:
myInts[1] = 5+5;
myInts[2] = 16;
myInts[3] = myInts[1] + myInts[2];
Mit einem der beiden folgenden Verfahren können Sie der Feldgruppe auch gleichzeitig mehrere Werte zuweisen: Mit einem dieser beiden Verfahren können Sie der Feldgruppe auch bei ihrer Erstellung Werte zuweisen:
myStringsInit string[] {"Hello", "Goodbye"};
myBigIntsInit bigint[] = [10, 40];
Falls Sie nicht nur Anfangswerte im Wertfestlegungsblock angeben, sondern der Feldgruppe auch Eigenschaften zuweisen wollen, geben Sie die Name/Wert-Paare für die Eigenschaften nach den Anfangswerten an:
myDecimals decimal(10,2)[3] {55.43, 22.12, 4.34, CurrencySymbol = "$"};
Wenn Sie die Anfangswerte unter Verwendung des Feldgruppenliterals angeben, können Sie Eigenschaften wie gewohnt mit Wertfestlegungsblock festlegen:
myBools boolean[3]{MaxSize = 5} = [true, false, true];
Falls Sie bei ihrer Erstellung in der Feldgruppe eine Reihe von Elementen angeben, wird diese Feldgruppe mit der entsprechenden Anzahl von Elementen initialisiert. Jedes Element besitzt den Standardwert für seinen Typ:
fiveInts int[5];
SysLib.writeStderr(fiveInts[1]); //Writes "0"
Es ist sinnvoll, bei der Erstellung einer Feldgruppe eine Anfangslänge anzugeben, damit sie von EGL initialisieren werden kann. Später können Sie jederzeit Elemente mit Feldgruppenfunktionen wie appendElement und removeElement hinzufügen oder entfernen.
Falls Sie jedoch keine Anfangslänge für die Feldgruppe angeben, beginnt sie mit Null und es gibt somit nichts, auf das in der Feldgruppe zugegriffen werden kann:
nullArray int[];
nullArray[2] = 5; //NullValueException!
nullArray.appendElement(5); //NullValueException!
nullArray {1,2,3}; //NullValueException!
Sie müssen stattdessen zunächst die Feldgruppe mit einem Feldgruppenliteral initialisieren:
nullArray2 int[];
nullArray2 = [1,2,3];
nullArray2.appendElement(4);
Alternativ können Sie auch einen Wertfestlegungsblock verwenden, um eine Nullfeldgruppe zu initialisieren:
emptyArray int[]{};
emptyArray.appendElement(5);
Im vorstehenden Beispiel ist der Wertfestlegungsblock leer. Sie können mit einem Wertfestlegungsblock nicht mehr Elemente zu einer Feldgruppe zuweisen, als gegenwärtig in der Feldgruppe vorhanden sind. Diese Feldgruppe enthält keine Elemente. Daher müssen Sie einen Wertfestlegungsblock mit Nullwerten verwenden.
Die Länge einer Feldgruppe können Sie vergrößern, indem Sie ihr ein längeres Feldgruppenliteral zuweisen. In diesem Fall wird die kürzere Feldgruppe durch eine neue und längere Feldgruppe überschrieben. Im folgenden Beispiel wird ein Feldgruppenliteral mit fünf Elementen zugewiesen, um eine Feldgruppe zu ersetzen, die lediglich zwei Elemente enthält:
smallIntArray int[2];
smallIntArray = [1,2,3,4,5];
Sie können mit einem Wertfestlegungsblock jedoch nicht mehr Elemente zu einer Feldgruppe zuweisen, als gegenwärtig in der Feldgruppe vorhanden sind:
smallStrArray string[2];
smallStrArray {"ab", "cd", "ef", "gh"}; 
//IndexOutOfBoundsException! Array has only 2 elements!

Weitere detaillierte Informationen zu Feldgruppen enthält der Abschnitt über Feldgruppen in der EGL-Sprachreferenz.


Feedback