在模板文件的表达式中使用未初始化的变量时出错
Error while using un-initialized variable in an expression in a template file
我正在尝试使用 template-toolkit 版本 2.29 和 perl 5.28.1 处理模板文件。我在处理模板文件时收到警告
第 xyz 行的参数“”不是数字加法 (+)
我认为这是因为在模板文件中我们有未初始化的变量,这些变量用于算术表达式。
如果使用 template-toolkit 版本 2.29,是否有必要在表达式中使用变量之前对其进行初始化?
在下面的代码中,第 5 行出现警告。
下面是代码片段。
[%- groups = {} -%] <br/>
[%- cols = [ 10, 10, 20, 30 ] -%] <br/>
[%- FOREACH c IN cols -%] <br/>
[%- val = c -%] <br/>
[%- groups.$val = groups.$val + 1 -%] <br/>
[%- END -%] <br/>
如果我们在表达式中使用它之前初始化 groups.$val
,则没有警告。
我在使用 template-toolkit 2.15 版时没有遇到这个问题。
不确定 2.29(或任何其他大于 2.15 的版本)发生了什么变化导致警告?
这不是错误,是警告。
如果您不想收到警告,只需在分配给变量时填充变量即可:
[%- groups.$val = (groups.$val || 0) + 1 -%]
或者也许
[%- groups.$val = (groups.$val.defined ? groups.$val : 0) + 1 -%]
不幸的是,没有类似于 Perl 的 ++
或 +=
的运算符可以像 Perl 的运算符那样跳过警告。
我正在尝试使用 template-toolkit 版本 2.29 和 perl 5.28.1 处理模板文件。我在处理模板文件时收到警告
第 xyz 行的参数“”不是数字加法 (+)
我认为这是因为在模板文件中我们有未初始化的变量,这些变量用于算术表达式。
如果使用 template-toolkit 版本 2.29,是否有必要在表达式中使用变量之前对其进行初始化?
在下面的代码中,第 5 行出现警告。
下面是代码片段。
[%- groups = {} -%] <br/>
[%- cols = [ 10, 10, 20, 30 ] -%] <br/>
[%- FOREACH c IN cols -%] <br/>
[%- val = c -%] <br/>
[%- groups.$val = groups.$val + 1 -%] <br/>
[%- END -%] <br/>
如果我们在表达式中使用它之前初始化 groups.$val
,则没有警告。
我在使用 template-toolkit 2.15 版时没有遇到这个问题。
不确定 2.29(或任何其他大于 2.15 的版本)发生了什么变化导致警告?
这不是错误,是警告。
如果您不想收到警告,只需在分配给变量时填充变量即可:
[%- groups.$val = (groups.$val || 0) + 1 -%]
或者也许
[%- groups.$val = (groups.$val.defined ? groups.$val : 0) + 1 -%]
不幸的是,没有类似于 Perl 的 ++
或 +=
的运算符可以像 Perl 的运算符那样跳过警告。