首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在MarkLogic中传递地图作为参考?

如何避免在MarkLogic中传递地图作为参考?
EN

Stack Overflow用户
提问于 2018-04-10 06:02:57
回答 1查看 46关注 0票数 1

我使用的是ML 8.0-8

有没有办法不把Map作为引用传递给函数。

我的意思是,如果在函数中对地图进行任何更新,它就不应该反映在实际的地图中。

示例:

代码语言:javascript
复制
function call($map as map:map) {
     'add one more key in the $map'
}

declare $actualMap
call($actualMap)
print $actualMap

调用函数中的更新不应在$actualMap中反映

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-10 07:01:07

基本上你得克隆它。通过序列化和解析XQuery中的一行程序,您可以做到这一点:

代码语言:javascript
复制
let $clonedMap := map:map(document{ $map }/*)

注意,map:map可以保存不能序列化的项,比如函数引用。在这种情况下,您需要重建map:map。例如:

代码语言:javascript
复制
let $clonedMap := map:new(map:keys($map) ! map:entry(., map:get($map, .)))

实际上,第二种方法可能更快,但它不会递归地处理map:map,而第一种方法则会。您可以用类型转换器将第二个函数封装在递归函数中以进行补偿。

哈哈!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49746394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档