Twig的逻辑运算符会同时评估两个表达式吗?

3

如果我使用Twig表达式,例如:

{% if a and function(a) %}

如果a是假值,Twig是否仍会评估function(a),或者表达式在不评估第二部分的情况下将评估为false?同样适用于or


我想我可以这样做。实际上,由于我在网上找不到答案,所以我开始查看源代码。然而,我认为也许将来使用twig的设计师需要知道这个问题,而且可能不知道如何自行检查,所以我想问一下,这样他们就可以找到帮助了。 - iliveinapark
我很怀疑设计师会关心那个。 - zerkms
另外,die不是Twig函数,所以情况并不那么简单。 - iliveinapark
哦,来吧。创建你自己的函数并调用它。http://twig.sensiolabs.org/doc/advanced.html#functions - zerkms
完成并完成。希望这对某些人有用。 - iliveinapark
1个回答

6

简而言之:Twig 的逻辑运算符在 'and' 表达式的第一个部分为 falsey 时不会评估第二个部分,同样地,在 'or' 中如果第一个部分为 truthy,则不会评估后面的部分。

正如zerkms所指出的,可以通过使用 die 来测试。

例如:

{% if water_is_dry and die('water_is_wet') %}

由于第一个表达式为null,它是falsy值,所以不会死亡。

然而:

{% if water_is_dry or die('water_is_wet') %}

会死的。

请注意,这只有在将die作为Twig实例的函数添加时才起作用,例如:

$twig->addFunction(new Twig_SimpleFunction('die', 'die'));

2
@zerkms,我发现这个问题和新答案很有用。也许你应该在这里删除你的负号。 - Nate Bunney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接