如何在 freemarker 中评估 if 语句?

Posted

技术标签:

【中文标题】如何在 freemarker 中评估 if 语句?【英文标题】:How is if statement evaluated in freemarker? 【发布时间】:2013-11-04 16:02:10 【问题描述】:

我试图了解 freemarker 如何评估具有多个条件的 if 语句,例如:

<#if person?? && person.phone?has_content && person.phone != "11">
    do something
</#if>

如果是人??返回 false freemarker 是否仍会评估语句的其余部分,还是只会为整个语句返回 false?我试图弄清楚 person.phone 是否为 null 当它试图评估 if 语句中的最后一个条件时,这个 if 语句会抛出错误吗?我试图让它尽可能干净,而不是嵌套一堆 if 语句。

谢谢!

【问题讨论】:

似乎很容易测试,不是吗? 顺便说一句,person?? &amp;&amp; person.phone?has_contentperson.phone?has_content 相同。 【参考方案1】:

在 Java 中,逻辑运算符 &amp;&amp;|| 短路,这意味着如果不需要,它们不会在运算符之后计算任何内容。

在您给出的示例中,如果 person 计算结果为 false,则不会计算其余条件。

This answer provides a good example

另外,this forum thread 的最后一篇文章专门谈到了支持短路逻辑运算符的 freemarker

【讨论】:

虽然它不是 Java,但它们是短路的,就像在 Java 中一样。

以上是关于如何在 freemarker 中评估 if 语句?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中如何评估 if 语句?

Freemarker:if 语句中的枚举

如何在 Python 2.7 中评估 BASH-Like 命令 (if/elif/else) 语句

这个 if 语句如何评估为真?

freemarker中的if elseif else语句

FreeMarker 模板中的 if-else