Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 当您有一个键和值的向量时,创建地图_Clojure - Fatal编程技术网

Clojure 当您有一个键和值的向量时,创建地图

Clojure 当您有一个键和值的向量时,创建地图,clojure,Clojure,我相信这很容易,但我怀疑在通往idomatic clojure的路上会有很多小问题。也许我错过了什么,但是看clojure地图页面,我没有找到解决方案 给定两个向量(一个键和另一个值),如何高效地(关键字!)创建一个从键到值的映射 键和值如下所示: (:year :month :day) (core/split "2013-02-18" #"-") 自然的解决方案是使用zipmap: (zipmap [:year :month :day] (clojure.string/split "2013

我相信这很容易,但我怀疑在通往idomatic clojure的路上会有很多小问题。也许我错过了什么,但是看clojure地图页面,我没有找到解决方案

给定两个向量(一个键和另一个值),如何高效地(关键字!)创建一个从键到值的映射

键和值如下所示:

(:year :month :day) (core/split "2013-02-18" #"-")

自然的解决方案是使用zipmap:

(zipmap [:year :month :day] (clojure.string/split "2013-02-18" #"-"))
;= {:day "18", :month "02", :year "2013"}
对于这样的小地图,它实际上是相当有效的。对于更大的贴图,您希望
zipmap
使用瞬变,而目前它没有使用瞬变。在JIRA有一张票,上面有我的补丁:

当然,将瞬态启用的
zipmap
包含在自己的代码库中,并优先于
clojure.core
中的代码使用它是非常简单的。如果要压缩较大的地图,这是一件非常重要的事情


代码可以从补丁或ClojureScript核心库复制,后者在其
zipmap
中使用瞬态;这里有一个从1844版开始的链接(此特定功能可以在Clojure中使用,无需任何更改)。

您想要的是一个很好的答案,谢谢。Clojure到目前为止是一个爆炸,我感觉自己从OO编程的旁观者中解放出来了。。。