Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为xquery中的变量分配运算符_Xquery - Fatal编程技术网

为xquery中的变量分配运算符

为xquery中的变量分配运算符,xquery,Xquery,在Xquery中,有没有一种方法可以将数字运算符指定给变量 我必须根据节点标记对给定的一对值执行算术表达式 我已经设法做到了这一点,但它导致了大量重复的代码。我希望简化查询,以代替: 添加函数 重复的if代码-调用其他函数,但仍然重复 $value1+$value2 负号函数 重复的if代码 $value1-$value2 乘、除等 我想设置一个函数并向其发送一个变量,类似于: $value1$operator$value2 在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)
)

啊,对不起,我试图简化上述问题的错误。有几个运算符比描述的要多,表达式也有几个重复。