marklogic 带参数调用函数
marklogic invoke function with parameters
在 xdmp:invoke
的文档中,可以将参数作为第二个参数传递。
xdmp:invoke-function
此选项不可用。有什么解决方法可以实现这一目标吗?
将列表映射到函数很容易。我想要实现的是一种面向方面的功能,它检查以这种方式调用的任何功能的成功和失败以及标准日志消息。类似于:
declare function my-mapper ($array, $fn) {
(: standard logging and checks :)
for $a in $array
return try {
(: now call the function with parameter :)
xdmp:invoke-function($fn($a),<options>...</options>)
} catch ($e) {
(: standard housekeeping if something goes wrong :)
...
}
})
my-mapper($array, function ($item) {
(: do stuff with item :)
})
有没有什么方法可以使用 MarkLogic 在 XQuery 中实现这一点?
一个在无法访问调用它的上下文的情况下执行一个主模块,另一个在所有该上下文中执行一个函数。我认为这个想法是您不需要通过调用管道传递参数,因为您可以将它们作为调用 xdmp:invoke-function
的一部分传递给函数。你只需要将它包装在一个 0-arity 函数中:
xdmp:invoke-function(
function () { $fn($a) },
<options>...</options>)
在 xdmp:invoke
的文档中,可以将参数作为第二个参数传递。
xdmp:invoke-function
此选项不可用。有什么解决方法可以实现这一目标吗?
将列表映射到函数很容易。我想要实现的是一种面向方面的功能,它检查以这种方式调用的任何功能的成功和失败以及标准日志消息。类似于:
declare function my-mapper ($array, $fn) {
(: standard logging and checks :)
for $a in $array
return try {
(: now call the function with parameter :)
xdmp:invoke-function($fn($a),<options>...</options>)
} catch ($e) {
(: standard housekeeping if something goes wrong :)
...
}
})
my-mapper($array, function ($item) {
(: do stuff with item :)
})
有没有什么方法可以使用 MarkLogic 在 XQuery 中实现这一点?
一个在无法访问调用它的上下文的情况下执行一个主模块,另一个在所有该上下文中执行一个函数。我认为这个想法是您不需要通过调用管道传递参数,因为您可以将它们作为调用 xdmp:invoke-function
的一部分传递给函数。你只需要将它包装在一个 0-arity 函数中:
xdmp:invoke-function(
function () { $fn($a) },
<options>...</options>)