有没有办法为Xquery中的变量赋一个数值运算符?
我必须根据节点标记对给定的值对执行算术表达式。
我设法做到这一点,但它导致了很多重复的代码。我想简化查询,而不是:
添加
的功能如果代码重复 - 这会调用其他函数但仍然重复
$ value1 + $ value2
减号功能
如果代码重复
$ value1 - $ value2
等用于乘法,div等
我想设置一个函数并向其发送一个变量,类似于:
$ value1 $ operator $ value2
在xquery中有一种简单的方法吗?
谢谢你的帮助。
答案 0 :(得分:1)
如果您的查询处理器支持XQuery 3.0,则可以使用function items:
declare function local:foo($operator, $x, $y) {
let $result := $operator($x, $y)
return 2 * $result
};
然后可以像这样调用 local:foo(...)
:
let $plus := function($a, $b) { $a + $b },
$mult := function($a, $b) { $a * $b }
return (
local:foo($plus, 1, 2),
local:foo($mult, 3, 4)
)
答案 1 :(得分:0)
为什么不使用简单的if-else结构? E.g。
if (repeated code says you should add) then
$value1 + $value2
else
$value1 - $value2
你也可以简单地将重复代码放在另一个函数中,而不是复制代码。