gpt4 book ai didi

xquery - 如何在 MarkLogic XQuery 中编写 while 循环

转载 作者:行者123 更新时间:2023-12-02 05:49:32 25 4
gpt4 key购买 nike

是否有任何公认的习惯用法可以在 MarkLogic XQuery 中编写相当于 while 循环的内容?我知道我可以编写一个尾递归例程,但 MarkLogic XQuery 不会优化尾递归,并且我遇到了堆栈溢出(我必须绕循环约 20000 次)。

编者注:从 MarkLogic 6 开始,尾递归在 MarkLogic 中得到了优化。

最佳答案

递归是通常的方法。另一种方法是将 FLWOR 与 try-catch 结合使用,并抛出已知代码的异常以提前退出。

try {
for $x in 1 to count($tokens)
return tok($x) }
catch ($ex) {
if ($x/error:code eq 'BREAK') then ()
else xdmp:rethrow() }

tok 函数将调用 error((), 'BREAK') 退出父 FLWOR 表达式。如果需要,您可以将 token 计数乘以某个因子,或使用任意大的数字。

https://github.com/robwhitby/xray/blob/coverage/src/coverage.xqycover:actual-via-debug 函数中有一个更复杂的示例。

关于xquery - 如何在 MarkLogic XQuery 中编写 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com