动态访问的括号语法

只要动态访问有效,您就可以在括号中使用字符串变量、常量或文字来引用字段。每对填有常量的方括号相当于后跟有效标识的点。

尽管在字典声明中指定的所有键都必须符合 EGL 标识的规则,但您可以通过在 EGL 赋值语句中使用方括号语法来指定范围更广的键。方括号语法在下一示例中是必需的,在该示例中,会向字段添加两个条目并且会检索每个条目中的值:
  row Dictionary { lastname = "Smith" };
  category, motto STRING;

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

		category = row["Record"];
  motto    = row["ibm.com"]
如果通过在带点语法中使用标识来引用值,可通过使用相当于标识的字符串在方括号语法中引用同一个值。以下赋值的作用相同:
  row.age = 20;
  row["age"] = 20;

假定您声明了名为 myRecordVar01 的记录,该记录包括名为 myRecordVar02 的字段,而 myRecordVar02 本身是包含先前字典的记录。下面是一个有效引用:

  myRecordVar01.myRecordVar02.row.lastName
对于该引用而言,大多数情况下访问是静态的。如果您要访问字典中的字段,则会使用动态访问。假定这些常量在作用域中,但是:
  const SECOND STRING = "myRecordVar02";
  const GROUP  STRING = "row";
  const LAST   STRING = "lastName";
可以按如下所示来编写先前的引用:
  myRecordVar01[SECOND][GROUP][LAST]

引用中的第一个符号必须始终是有效标识,但在此情况下,动态访问在该标识之后生效。

可以同时使用带点语法和方括号语法。例如,以下引用相当于先前引用:
   myRecordVar01[SECOND].row[LAST]
下面是最后一个示例,考虑带有数组下标的引用:
  myRecordVar01.myRecordVar02.myRecordVar03[3][2].myInt
假定这些常量在作用域中:
  const SECOND  STRING = "myRecordVar02";
  const THIRD   STRING = "myRecordVar03";
  const CONTENT STRING = "myInt";
可以下列方式编写先前引用:
   myRecordVar01[SECOND][THIRD][3][2][CONTENT]

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

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

相关概念
引用固定结构的缩写语法
动态和静态访问
函数部件
部件
程序部件
对部件的引用
引用 EGL 中的变量
EGL 中的确定作用域规则和“this”
固定结构
Typedef

相关任务
声明 EGL 中的变量和常量

相关参考
数组
函数调用
EGL 源格式的函数部件
MQ 记录的选项记录
基本类型
使用声明

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.