前页 | 后页 |
变数
模板变量提供了一种在模板内存储和检索数据的便捷方法。本节说明如何定义和引用变量。
变量定义
变量定义采用基本形式:
$ <名称> = <值>
其中,<名称>可以是任何字母数字序列,而<值>是从宏或另一个变量派生的。
一个简单的示例定义是:
$ foo =%className%
可以使用以下值定义变量:
- 替代,函数或列表宏
- 字符串文字,用双引号引起来
- 变量引用
定义规则
这些规则适用于变量定义:
- 变量在定义它们的模板内具有全局作用域,其他模板不可访问
- 每个变量必须在行的开头定义,中间没有空格
- 变量用$开头,例如$ foo
- 在定义变量之前不必声明变量
- 必须使用赋值运算符(=)或加法赋值运算符(+ =)定义变量
- 使用加法运算符(+)可以将多个术语合并为一个定义
例子
使用替代宏:
$ foo =%opTag:“ bar”%
使用文字字符串:
$ foo =“酒吧”
使用另一个变量:
$ foo = $ bar
使用列表宏:
$ ops =%list =“ Operation” @separator =“ \ n \ n” @indent =“ \ t”%
使用加法分配运算符(+ =):
$ body + =%list =“ Operation” @separator =“ \ n \ n” @indent =“ \ t”%
该定义等同于:
$ body = $ body +%list =“ Operation” @separator =“ \ n \ n” @indent =“ \ t”%
使用多个术语:
$ templateArgs =%list =“ ClassParameter” @ separator =“,”%
$ template =“ template <” + $ templateArgs +“>”
变量引用
可以通过使用以下形式的引用来检索变量值:
$ <名称>
其中,<名称>可以是先前定义的变量。
可以使用变量引用:
- 作为宏的一部分,例如函数宏的参数
- 作为变量定义中的术语
- 将变量值直接替换为输出
变量引用-示例1
将变量用作宏的一部分。这是默认C ++ ClassNotes模板的摘录。
$ wrapLen =%genOptWrapComment%
$ style =%genOptCPPCommentStyle%(定义用于存储样式和换行长度选项的变量)
%if $ style ==“ XML.NET”%(作为条件的一部分引用$ style)
%XML_COMMENT($ wrapLen)%
%其他%
%CSTYLE_COMMENT($ wrapLen)%(将$ wrapLen作为函数宏的参数引用)
%万一%
变量引用-示例2
将变量引用用作变量定义的一部分。
$ foo =“ foo”(定义我们的变量)
$ bar =“酒吧”
$ foobar = $ foo + $ bar($ foobar现在包含值foobar)
变量引用-示例3
将变量值替换为输出。
$ bases =%classInherits%(将ClassInherits模板的结果存储在$ bases中)
Class%className%$ bases(现在在Class名称之后输出$ bases的值)