前页 | 后页 |
列表宏
如果您需要循环或迭代包含在当前object ,您可以使用%list宏来执行此操作。该宏对当前模板范围内的所有对象执行迭代传递,并调用另一个模板来处理每个对象。
基本结构是:
%list=<TemplateName> @separator=<string> @indent=<string> (<conditions>) %
其中 <string> 是双引号文字string , <TemplateName> 可以是以下模板名称之一:
- 属性
- 属性实现
- 类
- 类库
- ClassImpl
- 类初始化器
- 类接口
- 约束
- 自定义模板(自定义模板使您能够定义自己的模板)
- 工作量
- 内部类
- 内部类实现
- 链接文件
- 公制
- 命名空间
- 手术
- OperationImpl
- 参数
- 问题
- 需求
- 资源
- 风险
- 设想
- 测试
示例
在类转换中,类可能包含多个属性;此示例调用属性转换并输出作用域内类的每个属性的转换处理结果。结果列表用一个新行分隔其项目,并将它们分别缩进两个空格。如果作用域中的类有任何原型属性,它们将使用适当的专用模板生成。
%list="属性" @separator="\n" @indent=" "%
由@separator 表示的分隔符属性指定列表项之间应使用的空间,不包括列表中的最后一项。
由@indent 表示的缩进属性指定生成的输出中的每一行应该缩进的空间。
特别案例
使用 %list 宏时需要考虑一些特殊情况:
- 如果 Attribute模板用作 %list 宏的参数,这也会通过执行适当的 LinkedAttribute模板生成从关联派生的属性
- 如果 ClassBase模板用作 %list 宏的参数,这也会通过执行适当的类模板生成从模型中的链接派生的类库
- 如果 ClassInterface模板用作 %list 宏的参数,这也会通过执行适当的类模板生成从模型中的链接派生的类库
- 如果 InnerClass 或 InnerClassImpl 用作 %list 宏的参数,则这些类分别使用类和 ClassImpl 模板生成;这些参数指示模板应基于范围内的类的内部类进行处理