Types XQuery:为什么两者都有;()=()”;及;()等式()”;评估为假?
以下XQuery代码段:Types XQuery:为什么两者都有;()=()”;及;()等式()”;评估为假?,types,boolean,xquery,Types,Boolean,Xquery,以下XQuery代码段: let $x := () return if (not($x eq $x) and not($x = $x)) then "wat" else "makes sense" 返回wat。为什么?空序列的值应该是false,但是false()eq false()和false()=false()都计算为true。请参见eq之类的值比较运算符,它说:“如果原子化操作数是空序列,则值比较的结果是空序列”. 因此,()eq()计算为(),然后不(())计算为真()
let $x := ()
return if (not($x eq $x) and not($x = $x))
then "wat"
else "makes sense"
返回
wat
。为什么?空序列的值应该是false
,但是false()eq false()
和false()=false()
都计算为true
。请参见eq
之类的值比较运算符,它说:“如果原子化操作数是空序列,则值比较的结果是空序列”. 因此,()eq()
计算为()
,然后不(())
计算为真()。由于序列上的=
运算符隐式地是一个存在运算符(“序列中存在两个元素,如…”),因此在空序列上调用该运算符返回true是有意义的,无论通用运算符是什么。