as 演算子

as 演算子は、特定の EGL 型の値を別の型にキャストします。as 演算子は、Java™ が ExternalType 構文を介して戻すオブジェクトと連動して使用するケースが最も一般的です。 このアクセスは完全に静的であるため、EGL に定義した型にオブジェクトをキャストする必要があります。 詳しくは、『ExternalType パーツ』を参照してください。

この演算子は、ANY 型の変数を扱う場合にも便利です。

構文

as 演算子の構文図
expression
有効な EGL 式。
type
DataItem 以外のすべての EGL 型。DataItem パーツはそれが示すプリミティブ型と異なる型は定義しません。 ExternalType 参照の場合、ランタイム・コードでは、EGL ExternalType によって示される実際の型への参照が必要です。型には、NULL 可能な型指定文字「?」を含めることができます (『NULL 値および NULL 型』を参照)。

外部言語キャスト

EGL の型から Java の型へのマッピングが不十分な場合、as キャスト演算子を使用します (『EGL プリミティブ型の Java へのマッピング』を参照してください)。これは外部言語キャスト と呼ばれる特殊な as 演算子であり、この型は接頭部に言語名とコロンが付きます。 次のように、型のオペランド全体が引用府で囲まれます。
null as "java:java.lang.Integer"
Java objID タイプは、プリミティブではないため、 次の場合、EGL はオペランドのパーツをリバースします。
myVar as "objID:java"
以下の例は、javaLib.store() メソッドを使用した外部言語キャストを示しています。
  javaLib.store("storeId" as "objID:java", "myId" as "objID:java",
      "myMethod", myVar as "java:smallfloat");

これらの外部言語キャストは、EGL の Java アクセス関数のみで使用可能です (Java アクセス関数を参照してください)。これらは、EGL が以前のバージョンとの互換性のためにのみ保守している古い関数です。新規コードの場合は、より強力な ExternalType 構文を使用してください。

以下の例では、辞書の値のデフォルトのプリミティブ型は ANY です。 ANY 型は数式で使用することができないので、この値は数値型としてキャストする必要があります。

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

エラー条件

ターゲット・タイプに適さない値をキャストしようとすると、EGL は TypeCastException をスローします。


フィードバック