동적 유형 및 동적 액세스

EGL이 런타임 시 변수의 컨텐츠에 대한 액세스만 확인할 수 있는 경우 해당 변수의 유형은 동적 유형입니다. 실제로는 다음 필드를 참조할 때 동적 액세스를 수행합니다.
  • ANY 유형 변수의 필드
  • 사전의 필드
  • 대괄호 구문을 사용하여 작성된 고정되지 않은 레코드의 필드
이 마지막 경우에는 다음 예제와 같이 필드의 이름이 레코드 이름 뒤에 대괄호로 묶여 표시됩니다.
myCustomer["customerName"]

이 대괄호 구문을 ANY 유형 변수 또는 사전과 함께 사용할 수도 있습니다.

점 구문을 사용하는 표현식(예: myRecord.myField)에 대한 액세스도 동적일 수 있습니다. 다음 규칙에서는 EGL의 작동 방식을 보여줍니다. 필드 액세스 표현식(점으로 구분된 일련의 이름)의 가장 왼쪽 파트가 동적 유형이거나 유형이 ANY인 다른 표현식인 경우 EGL은 뒤따르는 필드에서 동적 액세스를 사용합니다. 실제로 이는 EGL이 표현식을 뒤따르는 필드에서 동적 액세스를 사용하려면 표현식이 사전, 고정되지 않은 레코드 또는 ANY 유형 변수의 이름으로 시작해야 함을 의미합니다.

동적 액세스는 ANY 유형 변수가 허용되는 위치에서 허용되며 동적 액세스가 있는 경우에는 유형이 ANY입니다.

올바른 코드를 생성하기 위해 피연산자의 데이터 유형이 필요한 명령문(예: I/O 명령문)은 동적 액세스 표현식을 피연산자로 사용할 수 없습니다.

예제

다음 예제에서는 동적 액세스의 다양한 메소드를 보여줍니다.
// Define a Dictionary named point
point Dictionary{x=1, y=1};

// Access value at key "x" of point
anInt = point["x"];

// Access point using normal data access syntax
anInt = point.x ;

// Access X using variable with value "x"
str String = "x";
anInt = point[ str ];