GDL 模板限定

模板和直接或间接派生自该模板的所有模板构成 继承树子树。 但是,已重新定义 *Name 构造的派生模板将从此树中排除。

在成员列表中命名模板时,GDL 分析程序会将命名模板和派生自命名模板的每个模板视为关联候选项。 如果此继承树中有多个符合条件的模板,则分析程序将选择最符合要与数据条目关联的条件的模板。 若要限定为表示给定数据条目的模板,该模板必须满足以下条件:

  • 声明为 *Virtual 的模板将自动取消资格。 但是,会考虑任何派生模板。

  • 模板的 *Name 构造必须与数据条目的关键字 (keyword) 匹配。 请注意,*名称可以继承。

  • 如果数据条目是构造,则模板的实例列表中的一个元素必须与数据构造的实例名称匹配。 此外,从中继承合格模板的每个基模板也必须满足此要求。 并非继承链中的所有模板都需要有 *实例条目;默认情况下,假定没有此条目的已满足此要求。

  • 如果继承树中的多个模板符合条件,则考虑以下附加条件:

    • 如果模板通过让继承链中的每个模板默认满足实例名称要求或使用通配符 <ANY> 进行限定,并且另一个符合条件的模板在其继承链中有一个或多个模板满足具有显式匹配的实例名称要求,则将使用使用显式匹配的模板。
    • 在剩余的合格模板中,将使用派生最多的模板。
    • 在其余符合条件的模板中,将使用最近定义的模板。