2

有没有办法将数字运算符分配给 Xquery 中的变量?

我必须根据节点标签对给定的一对值执行算术表达式。

我已经设法做到这一点,但它导致了很多重复的代码。我想简化查询,而不是:

添加功能

如果代码重复 - 这会调用其他函数但仍然重复

$价值1 + $价值2

减号函数

如果代码重复

$value1 - $value2

等用于乘法,div 等

我想设置一个函数并向其发送一个变量,类似于以下内容:

$value1 $运营商 $value2

有没有一种简单的方法可以在 xquery 中做到这一点?

感谢您的帮助。

4

2 回答 2

1

如果您的查询处理器支持XQuery 3.0,您可以为此使用函数项

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)
)
于 2012-10-23T18:28:22.913 回答
0

为什么不使用简单的 if-else 构造?例如

if (repeated code says you should add) then
  $value1 + $value2
else
  $value1 - $value2

您也可以简单地将重复的代码放在另一个函数中,而不是复制代码。

于 2012-10-23T17:35:13.260 回答