前页 | 后页 |
列表宏
如果您需要循环或迭代包含在当前对象内或当前对象下的一组对象,则可以使用%list宏来实现。该宏对当前模板范围内的所有对象执行迭代传递,并调用另一个模板来处理每个模板。
基本结构是:
%list = <模板名称> @ separator = <字符串> @ indent = <字符串>(<条件>)%
其中<string>是双引号文字字符串,而<TemplateName>可以是以下模板名称之一:
- 属性
- AttributeImpl
- 类
- 类库
- 类Impl
- 类初始化器
- 类接口
- 约束
- 自定义模板(自定义模板使您可以定义自己的模板)
- 努力
- 内部类
- 内部类
- 链接文件
- 公制
- 命名空间
- 操作方式
- OperationImpl
- 参数
- 问题
- 需求
- 资源资源
- 风险
- 情境
- 测试
例
在类转换中,类可能包含多个属性。本示例调用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模板生成这些类。这些论点指示应该基于范围内的类的内部类来处理模板