练习 2.1:代码模板

EGL 编辑器有几个工具可帮助您更快地编写代码。在此练习中,将学习如何将代码模板插入到代码中。代码模板是在使用编辑器的内容辅助功能时添加的样本代码片段。可以在任何类型的 EGL 文件或部件中使用代码模板。在将 EGL 模板与内容辅助配合使用的帮助主题中提供了有关内容辅助和代码模板的更多信息。

在此练习中,将使用 EGL 程序部件。此程序只是用来测试 EGL 将代码插入到文件中的方法,没有其它作用。除了此练习中讨论的代码模板,您还可以练习使用其它的代码模板。此程序部件只用于测试,因此您是否更改它或者里面存在错误也没多大关系。

创建程序以练习使用代码模板

  1. 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
  2. 从菜单栏中,单击文件 > 新建 > 其它。将打开“新建”窗口。
  3. 在“新建”窗口中,展开 EGL
  4. 单击程序
  5. 单击下一步
  6. 单击字段旁边的浏览。将打开“选择包”窗口。
  7. 在“选择包”窗口中,单击 data 包。
  8. 单击确定
  9. EGL 程序类型下面单击基本
  10. EGL 源文件名字段中,输入以下文本作为程序名:

    EditorExamples

    “新建 EGL 部件”窗口看起来应如下所示:

    “新建 EGL 部件”窗口的外观

  11. 单击完成。这就创建了新的程序部件并编辑器中打开它。此文件被命名为 EditorExamples.egl。

    此程序部件里面有几个错误。出现错误的原因是 EGL 包括了指示所需信息内容的文本。

  12. 除去 EditorExamples.egl 中的所有代码并用以下代码替换它:
    package data;
    
    program EditorExamples type basicProgram
    
    //Variables
    	a int;
    b int;
    c int;
    	
    function main()
    end
    	
    end
    

使用非标准的内容辅助来插入代码模板

使用代码模板的最简单方法是使用非标准的内容辅助。当使用非标准的内容辅助时,从可用代码模板的完整列表中选择代码模板。在后面将学习标准的内容辅助,它允许您从较短的代码模板列表中进行选择(如果您知道该代码模板的前几个字符的话)。标准的内容辅助通常是插入代码模板的较快方法。

  1. 在代码 function main() 与它的 end 语句(在下一行上)之间添加一个空白行。
  2. 在新的空白行上,输入以下代码:

    a =

  3. 将光标仍然置于刚才输入行的行末,按 Alt+/。在代码旁边就会打开内容辅助窗口。此窗口按字母顺序列示可用的代码模板。
  4. 在内容辅助窗口中,双击 MathLib。需要向下滚动才能找到它。

    现在显示的代码是 a = MathLib

  5. 将光标仍然置于刚才输入行的行末,再次按 Alt+/。将再次打开内容辅助窗口。
  6. 在内容辅助窗口仍然打开的情况下,输入以下文本:

    sq

    内容辅助窗口中的选择内容将移至与您输入的字母最接近的匹配项处。在此示例中,选择位置现在应该在 sqrt 上,它是 MathLib 库中的返回数字的平方根的函数。

  7. 当内容辅助窗口中的选择位置在 sqrt 上时,按 Enter 键。

    内容辅助窗口将关闭并将把 sqrt 函数调用插入到代码中。sqrt 函数返回数字的平方根。现在,代码行看起来应如下所示:

    a = mathLib.sqrt(numericItem);

    代码 numericItem 处于突出显示状态。这个突出显示的词语是一个提示,它提示您将自己的代码添加至模板。在此示例中,必须输入想要发送给 sqrt 函数的数字或数字变量。

  8. 将代码 numericItem 替换为字母 b,表示在程序中创建的其中一个 int 变量。

    当插入代码模板时,将自动选择提示符 numericItem。如果没有单击鼠标或移动光标,就可以立即输入变量名并覆盖该提示符。某些代码模板具有许多类似的提示符。如果代码模板具有许多提示符,则可以输入并覆盖第一个提示符,然后按 Tab 键以自动移至下一个提示符。

    现在,代码行看起来应如下所示:

    a = mathLib.sqrt(b);

  9. 保存该文件。

使用标准的内容辅助来插入代码模板

标准的内容辅助工作方式与上一节中输入 sq 来过滤内容辅助窗口上的代码模板列表一样。但是,当使用标准的内容辅助时,须在打开内容辅助窗口之前将开头几个字符输入到代码中。使用标准的内容辅助不但可以过滤模板列表,而且还可以使其它模板可用,例如,用于较大段 EGL 代码的模板和您为自己定制的模板。

  1. a = mathLib.sqrt(b); 代码后面添加新行。
  2. 在新行中,输入字母 i
  3. Alt+/。将再次打开内容辅助窗口。
  4. 在内容辅助窗口中,双击 ifelse - if else 语句。还可以用箭头键移动至此模板然后按 Enter 键来添加此模板。

    当从内容辅助窗口双击 if else 语句时,就会将一个 EGL if else 语句的模板插入到代码中。该模板包括一个名为 condition 的提示符,它表示 if 语句的逻辑表达式必须转至的位置。

  5. condition 提示符替换为以下代码:

    a > b

    新代码看起来应如下所示:

    if (a > b)
      // EGL statements
    		
    else
      // EGL statements
    end

    此代码包括一些注释以告诉您其它 EGL 代码应转至何处。

  6. 保存该文件。

测试内容辅助的上下文相关性

内容辅助窗口只显示对当前光标位置有效的模板。此上下文相关性会阻止您在错误的位置添加模板。

如您在前一个练习中所了解到的那样,不能在 PageHandler 部件或程序部件内定义 EGL 记录部件。但可在库部件中或 PageHandler 部件或程序部件后面定义记录部件。在这一节中,您将看到内容辅助窗口不允许您在程序部件中插入记录部件模板。

  1. c int; 这一行后面添加一个新行。
  2. 将光标移动到新行上。
  3. Alt+/ 以打开内容辅助窗口。注意,内容辅助窗口没有列出任何 EGL 记录模板。
  4. ESC 键以关闭内容辅助窗口而不插入任何代码模板。
  5. 在文件的底部最后一个 end 语句后面添加一个空白行并将光标移到此行上。
  6. Alt+/。由于可以在文件中的这个位置定义记录部件,所以内容辅助窗口显示关键字 record
  7. 在内容辅助窗口中,双击 record。关键字 record 现在就出现在代码中,但此代码模板非常简单,因为您使用了非标准的内容辅助。
  8. 从代码中除去词语 record 并在它的位置处输入字母 r
  9. Alt+/ 再次打开内容辅助窗口。由于正在使用标准的内容辅助,所以在内容辅助窗口中有几个记录部件模板。
  10. 在内容辅助窗口中,双击名为 record - Basic Record 的模板。这就会将更详细的代码模板添加至代码。
  11. 通过替换代码提示符 recordNameitemNametypeDefOrPrimitive 完成代码部件模板,或者删除记录部件模板。

编辑缺省代码模板

您可能想要修改缺省 EGL 模板或禁用不会使用的模板。EGL 代码模板的选项列示在“首选项”窗口中。在下面的步骤中,将在“首选项”窗口中更改缺省代码模板。

  1. 从菜单栏中,单击窗口 > 首选项。将打开“首选项”窗口。
  2. 在“首选项”窗口的左窗格中,单击 EGL > 编辑器 > 模板

    现在,“首选项”窗口就显示 EGL 代码模板的列表。从此窗口中,可以对代码模板进行以下更改:

  3. 单击名为 function invocation 描述为 unqualified function invocation 的代码模板。
  4. 单击编辑。将打开“编辑模板”窗口。在此窗口中,可以更改模板。

    模式字段显示代码模板本身。除非您在开始此教程之前对模板作出了更改,否则它将显示以下代码:

    ${functionName}();

    代码 ${functionName} 表示在此练习中前面部分覆盖的提示符(例如 conditionnumericItem 提示符)。

  5. 模式字段中,在代码的末尾添加以下注释:

    //unqualified function with no arguments

    “编辑模板”窗口看起来应如下所示:

    “编辑模板”窗口的外观

    此注释不会更改模板在 EGL 代码中的效果。但是,添加注释是演示更改代码模板的最简单方式。可采用想用的任何方法更改代码模板,可以通过添加注释,也可以更改 EGL 代码。

  6. 单击确定以保存对模板的更改并返回到“首选项”窗口。
  7. 单击确定以关闭“首选项”窗口。
  8. 在 EditorExamples.egl 文件中,在 function main() 这一行后面添加一个空白行。
  9. 将光标放在新行上,输入字母 f
  10. Alt+/ 以打开内容辅助窗口。
  11. 在内容辅助窗口中,双击 function invocation - unqualified function invocation

    这就将该代码模板添加至代码。您在“首选项”窗口添加的注释现在就包括在代码模板中。

  12. 从 EditorExamples.egl 文件中删除记录部件代码模板。

添加新的代码模板

还可以为常用的 EGL 代码片段创建代码模板。

  1. 从菜单栏中,单击窗口 > 首选项
  2. 在“首选项”窗口中,单击 EGL > 编辑器 > 模板
  3. 单击新建。将打开“新建模板”窗口。
  4. 在名称字段中。输入以下文本作为新模板的名称:

    customNestedIf

  5. 描述字段中,输入 This is an example of a custom template
  6. 通过以下步骤将该代码插入到模式字段中:
    1. 在第一行上,插入以下注释://This is a nested if statement
    2. 在下一行上,输入以下代码:

      if ((

    3. 单击插入变量。将在类似内容辅助窗口的窗口中打开变量列表。
    4. 从变量列表中双击名称 - 一般名称变量。这就会将该变量添加至代码模板。此变量将在把模板添加至代码时创建一个提示符。现在,“模式”字段中的代码模板看起来应如下所示:

      //This is a nested if statement
      if ((${name}

    5. 输入一个空格和一个 > 符号,然后输入另一个空格。
    6. 插入另一个一般名称变量。
    7. 输入以下代码:

      ) && (

    8. 插入另一个一般名称变量。
    9. 输入一个空格和一个 > 符号,然后输入另一个空格。
    10. 插入另一个一般名称变量。
    11. 输入两个 ) 符号。现在,代码看起来应如下所示:

      //This is a nested if statement
      if ((${name} > ${name}) && (${name} > ${name}))

    12. 在下一行上,输入以下内容:

      //If statement action goes here

    13. 在下一行上,输入 end 语句。

    现在,模式字段中的代码看起来应如下所示。如果您的代码不是这样,则可以复制并粘贴以下代码:

    //This is a nested if statement
    if ((${name} > ${name}) && (${name} > ${name}))
    end

    “新建模板”窗口看起来应如下所示:

    已完成的新模板

  7. 单击确定。现在,新模板就在模板列表中。
  8. 单击确定以关闭“首选项”窗口。
  9. 在 EditorExamples.egl 文件中,在代码 function main() 后面添加一个空白行。
  10. 在此新行上,输入字母 cu
  11. Alt+/
  12. 双击 customNestedIf 模板。这就会将您创建的模板添加至代码。
  13. ${name} 提示符中插入任何程序的变量的名称。

在此练习中,您已经学会了如何使用内容辅助来将代码模板添加至代码。可以使用 EditorExamples.egl 文件来练习使用尽可能多的代码模板。

现在,您可以开始进行练习 2.2:片段了。

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