我正在学习XQuery和MarkLogic。我遇到过一张地图,它看起来像是其他语言的哈希,但看起来你只需要使用结构化语言的内置功能即可完成所需的工作。
地图有什么好处:map()比结构化语言好吗?
谢谢!
答案 0 :(得分:2)
我认为主要有两个原因:
答案 1 :(得分:2)
地图已添加到XSLT 3.0工作草案中,并且一些XQuery供应商已经开始在将它们包含在XQuery语言之前实现它们。
需要它们的原因有很多。 XML元素不能包含任意值:例如,XML元素的属性不能是文档或元素节点,也不能是包含字符串后跟两个整数或函数的序列。此外,由于XML节点具有标识和父信息,因此复制它们是一项昂贵的操作,并且(除了在XQuery更新的有限范围内),您无法在不复制整个事物的情况下修改XML树。相比之下,即使使用不可变的地图,使用增量也可以非常便宜地制作修改过的副本。
顺便提一下,地图上有不同语言的大量不同名称。术语“哈希”,“字典”,“关联数组”,“对象”都是遇到的。术语“地图”似乎是现代功能语言中最常见的一种。 “哈希”强烈建议实现,并且建议必须将地图实现为哈希表是错误的。其他数据结构如红黑树或指树可能更合适。