1

我无法使用这个条件表达式

<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->

而这个没有!之前=的作品完美

<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->

有什么问题?我没有收到任何错误!=,尽管在其他条件下不起作用||,但适用于单一条件。

4

1 回答 1

2

这是因为=!=几乎不是同一个运算符。请注意,根据德摩根定律(我也在这篇旧帖子中解释过),

a != b || c != d

相当于

a = b && c = d

这对于where永远不会正确x = a && x = ba != b

更改二元运算符也需要更改条件以使其等效。

因此,根据上述逻辑,

$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html

相当于

$DOCUMENT_NAME=index.html && $DOCUMENT_NAME=links.html

不可能是真的,因为 $DOCUMENT_NAME 可以是 "index.html""links.html" 但不能同时是两者

然而,第二个片段,

$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html

“有效”,因为没有上面提到的逻辑永远不正确的谬误。当 $DOCUMENT_NAME是“index.html”或“links.html”时,它会是真的。


一些语言/价值观会违反上述等价性..但这是另一个话题。

于 2012-08-29T02:01:03.183 回答