前页 后页

列表宏

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

基本结构是:

%list = <模板名称> @ separator = <字符串> @ indent = <字符串>(<条件>)%

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

  • 属性
  • AttributeImpl
  • 类库
  • 类Impl
  • 类初始化器
  • 类接口
  • 约束
  • 自定义模板(自定义模板使您可以定义自己的模板)
  • 努力
  • 内部类
  • 内部类
  • 链接文件
  • 公制
  • 命名空间
  • 操作方式
  • OperationImpl
  • 参数
  • 问题
  • 需求
  • 资源资源
  • 风险
  • 情境
  • 测试
<conditions>是可选的,并且看起来与'if'和'elseIf'语句的条件相同。

在类转换中,类可能包含多个属性。本示例调用Attribute变换,并输出范围内Class的每个属性对变换进行处理的结果。结果列表用一行新行将其项目分开,并分别在它们之间缩进两个空格。如果范围内的类具有任何构造型属性,则将使用适当的专用模板来生成它们。

%list =“属性” @separator =“ \ n” @ indent =“”%

分隔符属性,用@separator表示,它指定列表项之间应使用的空间,但列表中的最后一项除外。

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

特别案例

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

  • 如果将属性模板用作%list宏的参数,则这还将通过执行适当的LinkedAttribute模板来生成从关联派生的属性
  • 如果将ClassBase模板用作%list宏的参数,则还会通过执行适当的LinkedClassBase模板来生成从模型中的链接派生的Class基类
  • 如果将ClassInterface模板用作%list宏的参数,则还会通过执行适当的LinkedClassInterface模板来生成从模型中的链接派生的Class基类
  • 如果将InnerClass或InnerClassImpl用作%list宏的参数,则分别使用Class和ClassImpl模板生成这些类。这些论点指示应该基于范围内的类的内部类来处理模板

学到更多