前页 后页

变数

模板变量提供了一种在模板内存储和检索数据的便捷方法。本节说明如何定义和引用变量。

变量定义

变量定义采用基本形式:

$ <名称> = <值>

其中,<名称>可以是任何字母数字序列,而<值>是从宏或另一个变量派生的。

一个简单的示例定义是:

$ 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的值)