Как оценивается утверждение if в freemarker?


Я пытаюсь понять, как freemarker оценивает оператор if с несколькими условиями, например:

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

Если человек?? возвращает false будет ли freemarker по-прежнему оценивать остальную часть оператора или он просто вернет false для всего оператора? Я пытаюсь понять, если человек.phone is null будет ли это если оператор выдает ошибку, когда он пытается оценить последнее условие в операторе if? Я старался сделать его как можно более чистым вместо того, чтобы гнездить кучу если заявления.

Спасибо!

1 3

1 ответ:

В Java логические операторы && и || замкнуты, то есть они ничего не вычисляют после оператора, если им это не нужно.

В приведенном примере, если значение person равно false, то остальные условия оцениваться не будут.

Этот ответ дает хороший пример

Кроме того, последний пост в этой теме форума говорит конкретно о freemarker, поддерживающем логические операторы короткого замыкания