Sintaxis de corchete para el acceso dinámico

Siempre que el acceso dinámico sea válido, puede hacer referencia a un campo utilizando una variable de serie, una constante o un literal entre corchetes. Cada par de corchetes relleno es equivalente a un punto seguido por un identificador válido.

Aunque algunas claves especificadas en una declaración de diccionario deben cumplir las reglas para los identificadores de EGL, puede especificar un rango más amplio de claves utilizando la sintaxis de corchetes en sentencias de asignación de EGL. La sintaxis de corchetes es necesaria en el ejemplo siguiente, donde se añaden dos entradas a un diccionario y se recupera el valor en cada una de esas entradas:
  row Dictionary { lastname = "Smith" };
  category, motto STRING;

  row["Record"] ="Reserved word";
	 row["ibm.com"]="Think!";	

		category = row["Record"];
  motto    = row["ibm.com"]
Si hace referencia a un valor utilizando un identificador mediante la sintaxis con puntos, puede hacer referencia al mismo valor utilizando una serie que sea equivalente al identificador. Las aignaciones siguientes tienen el mismo efecto:
  row.age = 20;
  row["age"] = 20;

Suponga que ha declarado un registro llamado myRecordVar01 que incluye un campo llamado myRecordVar02 y que myRecordVar02 es en sí mismo un registro que incluye el diccionario anterior. Una referencia válida es la siguiente:

  myRecordVar01.myRecordVar02.row.lastName
El acceso es estático para la mayoría de esa referencia. El acceso dinámico empieza cuando accede al campo en el diccionario. Suponga que estas constantes están en ámbito, sin embargo:
  const SECOND STRING = "myRecordVar02";
  const GROUP  STRING = "row";
  const LAST   STRING = "lastName";
Puede codificar la referencia anterior de la forma siguiente:
  myRecordVar01[SECOND][GROUP][LAST]

El primer símbolo de una referencia siempre debe ser un identificador válido, pero en este caso, el acceso dinámico entra en vigor después de ese identificador.

Puede mezclar ambas sintaxis: con puntos y con corchetes. Por ejemplo, la referencia siguiente es equivalente a la anterior:
   myRecordVar01[SECOND].row[LAST]
Como un ejemplo final, considere una referencia con un índice de matriz:
  myRecordVar01.myRecordVar02.myRecordVar03[3][2].myInt
Suponga que estas constantes están en ámbito:
  const SECOND  STRING = "myRecordVar02";
  const THIRD   STRING = "myRecordVar03";
  const CONTENT STRING = "myInt";
Puede codificar la referencia anterior de las siguientes maneras:
   myRecordVar01[SECOND][THIRD][3][2][CONTENT]

   myRecordVar01[SECOND][THIRD][3][2].myInt

   myRecordVar01.myRecordVar02.THIRD[3][2][CONTENT]

Conceptos relacionados
Sintaxis abreviada para referirse a estructuras fijas
Acceso dinámico y estático
Componente de función
Componentes
Componente de programa
Referencias a componentes
Referencias a variables en EGL
Reglas de ámbito y "this" en EGL
Estructura fija
Typedef

Tareas relacionadas
Declarar variables y constantes en EGL

Consulta relacionada
Matrices
Invocaciones de función
Componente de función en formato fuente EGL
Registros de opciones para registros MQ
Tipos primitivos
Declaración use

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.