【发布时间】:2019-06-25 15:02:44
【问题描述】:
我们正在重构一个非常大的系统,并查看了我们编写的许多 xQuery,并想知道使用并包含一个声明许多全局变量的 xQuery 是否无济于事。
但问题在于建筑师……这些是在参考时加载还是仅在使用时加载?
意思是说我有一些 xQuery ... _global.xq 像这样:
module namespace g="global/variables";
declare variable $g:col.build := '/db/foo/data/Build';
declare variable $g:doc.langmap := doc(concat($g:col.build,'/','langmap.xml'));
declare variable $g:doc.easymap := doc(concat($g:col.build,'/','easymap.xml'));
declare variable $g:doc.foomap := doc(concat($g:col.build,'/','foomap.xml'));
然后我在我的 xQuery 中引用它:
import module namespace g='global/variables' at '_global.xq';
然后我在我的 xQuery 中只使用 $g:doc.langmap。其他两个($g:doc.easymap 和 $g:doc.foomap)是否也在内存中进行评估和加载,即使我不使用它们?
$g:doc.langmap 是填充在 import 上还是仅当我在查询中实际使用它时才填充?就像我编写一个从未引用 $g:doc.langmap 但导入该模块的 xQuery 一样,它是否仍然在内存中创建并填充?
我想知道_global.xq 中是否还有许多其他声明变量可用于许多其他xQueries。当然,我不使用每个参考文献中的一些参考资料。那么问题就很简单了……import module 命令是否会导致它们在导入时都被评估,还是它们只有在使用时才具有值?
我怀疑这将是一个非常简短的答案。
【问题讨论】: