我敢肯定這很容易,但我懷疑我會有很多小問題在通向idomatic clojure的路上。也許我錯過了一些東西,但看着clojure地圖頁面,我沒有找到解決方案。創建地圖,當你有一個向量的鍵和值
給定兩個向量(其他值的關鍵之一)如何有效地(關鍵詞!)創建一個從鍵到值的映射?
的鍵和值都低於:
(:year :month :day) (core/split "2013-02-18" #"-")
我敢肯定這很容易,但我懷疑我會有很多小問題在通向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中有一張票,附有我的補丁:CLJ-1005。
當然,它足夠簡單,可以將啓用瞬態的zipmap
包含在自己的代碼庫中,並優先於clojure.core
中的代碼。如果你正在壓縮更大的地圖,這是一個非常重要的事情。
可以從修補程序或從ClojureScript核心庫複製代碼,該庫使用其zipmap
中的瞬變;這裏是到版本1844的ClojureScript source的鏈接(這個特殊的功能可以在Clojure中使用,不需要改變)。
你在找什麼是zipmap
很好的答案謝謝你。 Clojure到目前爲止是一個爆炸,我覺得自己正在從面向對象編程的面紗中釋放出來...... – Core