我使用的是ML 8.0-8
有没有办法不把Map作为引用传递给函数。
我的意思是,如果在函数中对地图进行任何更新,它就不应该反映在实际的地图中。
示例:
function call($map as map:map) {
'add one more key in the $map'
}
declare $actualMap
call($actualMap)
print $actualMap调用函数中的更新不应在$actualMap中反映
发布于 2018-04-10 07:01:07
基本上你得克隆它。通过序列化和解析XQuery中的一行程序,您可以做到这一点:
let $clonedMap := map:map(document{ $map }/*)注意,map:map可以保存不能序列化的项,比如函数引用。在这种情况下,您需要重建map:map。例如:
let $clonedMap := map:new(map:keys($map) ! map:entry(., map:get($map, .)))实际上,第二种方法可能更快,但它不会递归地处理map:map,而第一种方法则会。您可以用类型转换器将第二个函数封装在递归函数中以进行补偿。
哈哈!
https://stackoverflow.com/questions/49746394
复制相似问题