Dynamische Typen und dynamischer Zugriff

Wenn EGL nur während der Ausführung auf den Inhalt einer Variablen zugreifen kann, hat diese Variable einen dynamischen Typ. In der Praxis führen Sie einen dynamischen Zugriff aus, wenn Sie auf eines der folgenden Felder verweisen:
In diesem letzten Fall erscheint der Name eines Felds in Klammern hinter dem Namen des Datensatzes, wie in folgendem Beispiel gezeigt wird:
myCustomer["customerName"]

Sie können diese Klammernsyntax auch mit einer Variable des Typs ANY oder mit einem Wörterverzeichnis verwenden.

Der Zugriff auf Ausdrücke, die eine Punktsyntax verwenden (wie z. B. myRecord.myField), kann ebenfalls dynamisch sein. Die folgende Regel gibt vor, wie sich EGL verhält: Wenn der ganz links befindliche Abschnitt eines Feldzugriffsausdrucks (eine Reihe von Namen, die durch Punkte getrennt sind) ein dynamischer Typ oder ein anderer Ausdruck mit dem Typ ANY ist, verwendet EGL den dynamischen Zugriff für alle Felder, die folgen. In der Praxis bedeutet dies, dass der Ausdruck mit dem Namen eines Wörterverzeichnisses, einem Datensatz fester Länge oder einer Variable des Typs ANY beginnen muss, damit EGL den dynamischen Zugriff für Felder verwenden kann, die auf den Ausdruck folgen.

Der dynamische Zugriff ist überall dort zulässig, wo eine Variable des Typs ANY zulässig ist. Und überall dort, wo dynamischer Zugriff besteht, ist der Typ ANY.

Anweisungen, die den Datentyp der Operanden benötigen, um den richtigen Code zu generieren (z. B. E/A-Anweisungen), können Ausdrücke mit dynamischem Zugriff nicht verwenden.

Beispiel

Das folgende Beispiel zeigt verschiedene Methoden für den dynamischen Zugriff:
// Definition eines Wörterverzeichnisses mit dem Namen 'point'
point Dictionary{x=1, y=1};

// Zugriff auf Wert bei Schlüssel "x" von 'point'
anInt = point["x"];

// Zugriff auf 'point' mit normaler Datenzugriffssyntax
anInt = point.x ;

// Zugriff auf X mithilfe von Variable mit Wert "x"
str String = "x";
anInt = point[ str ];

Feedback