Freemarker 模板语言中的变量名

Posted

技术标签:

【中文标题】Freemarker 模板语言中的变量名【英文标题】:Variable name in Freemarker Template Language 【发布时间】:2021-03-13 07:14:24 【问题描述】:

如何设置变量名如

1. "var(a)" in interpolation like $var(a)
2."var/a" in interpolation like $var/a
are these valid variable names? or whats the alternate.

【问题讨论】:

变量名中的字符没有限制,但是如果你有保留字符,如()/,使用它们会很冗长。另外我不确定是否清楚,但$var/a 的意思是“取变量var 的值,除以变量a 的值,然后打印结果”。 【参考方案1】:

这是一个老问题,但我认为它可能会有所帮助,所以我还是会回答它:

首先需要注意的是,这些名称不是变量命名的好习惯,不仅在 freemarker 中,而且在大多数语言中。因此,在这种情况下最好的办法是重新考虑变量名

请尽量给每个变量一个合适的名字。这可能一开始似乎并不那么重要,但随着您在编程方面的经验越来越丰富,您会越来越意识到这会产生巨大的影响。

我很抱歉在回答之前有这个“不相关”的大解释,但这里的目的是为社区做一个补充,所以澄清这一点非常重要,因为这个功能可能会被滥用。

但是无论如何,如果您有非常特殊的情况需要使用带有不寻常字符的不寻常变量名,您可以在使用 #assign 时使用字符串文字作为变量名来实现强>指令。 Oficial reference

但有一个问题:当您为变量创建这样一个不寻常的名称时,调用它可能是一个令人困惑的名称(例如在插值中)。所以当你需要变量的内容时,不能简单地调用它的名字,必须使用特殊变量.vars。 Oficial reference

第一次设置变量,然后写入,然后更改并再次写入的示例如下:

<#assign "var(a)" = "FIRST TIME" />
$.vars["var(a)"]
<#assign "var(a)" = "SECOND TIME" />
$.vars["var(a)"]

*一个常见的错误是尝试使用 但这行不通。

【讨论】:

【参考方案2】:

这里最好的解决方案是使用有意义的变量名,而不是使用保留字符。您可以通过使用$variablename

来使用该变量

【讨论】:

以上是关于Freemarker 模板语言中的变量名的主要内容,如果未能解决你的问题,请参考以下文章

ftl文件 是啥文件

freemarker

使用freemarker模板引擎生成word文档的开发步骤

FreeMarker语言

freemarker生成go语言

Django 模板语言