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

Cor*_*ore 7 clojure

我确信这很容易,但我怀疑在通往idomatic clojure的道路上我会有很多小问题.也许我错过了一些东西,但看着clojure地图页面,我找不到解决方案.

给定两个向量(其中一个键是值),你如何有效地(关键词!)创建一个从键到值的映射?

键和值如下:

(:year :month :day) (core/split "2013-02-18" #"-")
Run Code Online (Sandbox Code Playgroud)

Mic*_*zyk 18

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

(zipmap [:year :month :day] (clojure.string/split "2013-02-18" #"-"))
;= {:day "18", :month "02", :year "2013"}
Run Code Online (Sandbox Code Playgroud)

对于像这样的小地图,它实际上非常有效.对于较大的地图,您需要zipmap使用当前不具有的瞬态.在JIRA中有一张票,我附上了补丁:CLJ-1005.

当然,它很简单,可以zipmap在一个人自己的代码库中包含瞬态启用,并优先使用它clojure.core.如果您正在制作更大的地图,这是非常重要的事情.

代码可以从补丁或ClojureScript核心库中复制,ClojureScript核心库在其中使用瞬态zipmap; 这里是一个到1844年发布的ClojureScript源代码的链接(这个特殊的函数可以在Clojure中使用而不做任何更改).