为xquery中的变量分配运算符
在Xquery中,有没有一种方法可以将数字运算符指定给变量 我必须根据节点标记对给定的一对值执行算术表达式 我已经设法做到了这一点,但它导致了大量重复的代码。我希望简化查询,以代替: 添加函数 重复的if代码-调用其他函数,但仍然重复 $value1+$value2 负号函数 重复的if代码 $value1-$value2 乘、除等 我想设置一个函数并向其发送一个变量,类似于: $value1$operator$value2 在xquery中有没有一种简单的方法可以做到这一点为xquery中的变量分配运算符,xquery,Xquery,在Xquery中,有没有一种方法可以将数字运算符指定给变量 我必须根据节点标记对给定的一对值执行算术表达式 我已经设法做到了这一点,但它导致了大量重复的代码。我希望简化查询,以代替: 添加函数 重复的if代码-调用其他函数,但仍然重复 $value1+$value2 负号函数 重复的if代码 $value1-$value2 乘、除等 我想设置一个函数并向其发送一个变量,类似于: $value1$operator$value2 在xquery中有没有一种简单的方法可以做到这一点 谢谢您的帮助。为什
谢谢您的帮助。为什么不使用简单的if-else构造?例如
if (repeated code says you should add) then
$value1 + $value2
else
$value1 - $value2
您也可以简单地将重复的代码放入另一个函数中,而不是复制代码。如果您的查询处理器支持,您可以使用:
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)
)
啊,对不起,我试图简化上述问题的错误。有几个运算符比描述的要多,表达式也有几个重复。