Operator 'as'

Mit dem Operator as können Sie den Wert eines einzelnen EGL-Typs in einen anderen Typ umsetzen. Am häufigsten wird der Operator as in Verbindung mit Objekten eingesetzt, die von Java™ über die Syntax für 'ExternalType' zurückgegeben werden. Dieser Zugriff ist immer statisch. Sie können deshalb Objekte nur in Typen umsetzen, die Sie in EGL definiert haben. Weitere Informationen hierzu finden Sie im Abschnitt 'ExternalType-Abschnitt'.

Der Einsatz des Operators ist darüber hinaus auch bei Variablen des Typs 'ANY' sinnvoll.

Syntax

Syntaxdiagramm für den Operator 'as'
expression
Ein beliebiger gültiger EGL-Ausdruck
type
Ein beliebiger EGL-Typ, der Typ 'DataItem' ausgenommen. Ein DataItem-Abschnitt definiert keinen anderen Typ als den Basiselementtyp, um den es sich bei dem Abschnitt handelt. Bei Referenzen auf 'ExternalType' muss der Laufzeitcode den tatsächlichen Typ referenzieren, den der EGL-Typ 'ExternalType' darstellt. Die Typangabe kann ein Fragezeichen (?) enthalten, um einen Typ anzugeben, der einen Nullwert annehmen kann (siehe 'Nullwerte und nullfähiger Typ').

Umsetzung in fremde Programmiersprachen

Verwenden Sie den Umsetzungsoperator as in Situationen, in denen die Zuordnung von EGL-Typen zu Java-Typen nicht ausreicht (siehe 'EGL-Basiselemente zu Java zuordnen'). Bei diesem speziellen Fall handelt es sich um eine Umsetzung mithilfe des Operators as, die als Umsetzung in eine fremde Programmiersprache bezeichnet wird. Der Typbezeichnung werden dabei der Name einer Programmiersprache und ein Doppelpunkt vorangestellt. Der gesamte Typoperand wird in Anführungszeichen gesetzt. Dazu folgendes BeispieL:
null as "java:java.lang.Integer"
Da es sich bei dem Typ 'Java objID' nicht um einen Basiselementtyp handelt, kehrt EGL die Bestandteile des Operanden in diesem Fall um:
myVar as "objID:java"
Das folgende Beispiel veranschaulicht eine Umsetzung in eine fremde Programmiersprache mithilfe der Methode javaLib.store():
  javaLib.store("storeId" as "objID:java", "myId" as "objID:java",
      "myMethod", myVar as "java:smallfloat");

Diese Umsetzungen in fremde Programmiersprachen sind nur mithilfe der Java-Zugriffsfunktionen von EGL verfügbar (siehe dazu Java-Zugriffsfunktionen). Bei diesen Funktionen handelt es sich um angestammte Funktionen, die von EGL verwendet werden, um die Kompatibilität mit älteren Versionen zu wahren. Verwenden Sie für neuen Code die leistungsfähigere ExternalType-Syntax.

Beispiel

Im folgenden Beispiel handelt es sich bei dem Standardbasiselementtyp für einen Wörterbuchwert um 'ANY'. Der Typ 'ANY' kann in numerischen Ausdrücken nicht verwendet werden, Sie müssen die Werte deshalb in numerische Typen umsetzen.

aDict Dictionary{ a = 1, b = 4 };
result int;
result = (aDict.a as INT) + (aDict.b as INT);

Fehlerbedingungen

Wenn Sie versuchen, einen Wert umzusetzen, der nicht für den Zieltyp geeignet ist, löst EGL eine Ausnahmebedingung wegen eines Fehlers bei der Typumsetzung aus.


Feedback