预订演示
前页 后页

列表宏

如果您需要循环或迭代包含在当前object ,您可以使用%list宏来执行此操作。该宏对当前模板范围内的所有对象执行迭代传递,并调用另一个模板来处理每个对象。

基本结构是:

%list=<TemplateName> @separator=<string> @indent=<string> (<conditions>) %

其中 <string> 是双引号文字string , <TemplateName> 可以是以下模板名称之一:

  • 属性
  • 属性实现
  • 类库
  • ClassImpl
  • 类初始化器
  • 类接口
  • 约束
  • 自定义模板(自定义模板使您能够定义自己的模板)
  • 工作量
  • 内部类
  • 内部类实现
  • 链接文件
  • 公制
  • 命名空间
  • 手术
  • OperationImpl
  • 参数
  • 问题
  • 需求
  • 资源
  • 风险
  • 设想
  • 测试
<conditions> 是可选的,看起来与 'if' 和 'elseIf' 语句的条件相同。

示例

在类转换中,类可能包含多个属性;此示例调用属性转换并输出作用域内类的每个属性的转换处理结果。结果列表用一个新行分隔其项目,并将它们分别缩进两个空格。如果作用域中的类有任何原型属性,它们将使用适当的专用模板生成。

%list="属性" @separator="\n" @indent=" "%

由@separator 表示的分隔符属性指定列表项之间应使用的空间,不包括列表中的最后一项。

由@indent 表示的缩进属性指定生成的输出中的每一行应该缩进的空间。

特别案例

使用 %list 宏时需要考虑一些特殊情况:

  • 如果 Attribute模板用作 %list 宏的参数,这也会通过执行适当的 LinkedAttribute模板生成从关联派生的属性
  • 如果 ClassBase模板用作 %list 宏的参数,这也会通过执行适当的类模板生成从模型中的链接派生的类库
  • 如果 ClassInterface模板用作 %list 宏的参数,这也会通过执行适当的类模板生成从模型中的链接派生的类库
  • 如果 InnerClass 或 InnerClassImpl 用作 %list 宏的参数,则这些类分别使用类和 ClassImpl 模板生成;这些参数指示模板应基于范围内的类的内部类进行处理

了解更多