【问题标题】:Variable name in Freemarker Template LanguageFreemarker 模板语言中的变量名
【发布时间】: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 的值,然后打印结果”。

标签: java freemarker


【解决方案1】:

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

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

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    来使用该变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多