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 模板语言中的变量名的主要内容,如果未能解决你的问题,请参考以下文章