5

我是 Clojure 的新手,我想知道是否有办法从两个或多个序列创建一系列映射。

假设您有:

(def numbers '(1 2 3))
(def letters '("a" "b" "c"))
(def shapes '("circle" "square" "triangle")) 

如果你合并了这些,我想得到 Ruby 中的哈希数组,或者 Clojure 中的一系列映射?

({:number 1, :letter "a", :shape "circle"} {:number 2, :letter "b", :shape "square"} {:number 3, :letter "c", :shape "triangle"})

谢谢!

4

2 回答 2

4
 (map (fn [n l s] {:number n, :letter l, :shape s})  numbers letters shapes) ;;=> 
 ({:number 1, :letter "a", :shape "circle"} {:number 2, :letter "b", :shape "square"} {:number 3, :letter "c", :shape "triangle"})
于 2012-06-10T08:15:57.750 回答
4

我确信有一种更惯用的方式来做到这一点,但是:

(map (fn [n l s] {:number n, :letter l, :shape s}) numbers letters shapes)

甚至

(map #(do {:number %1, :letter %2, :shape %3}) numbers letters shapes)
于 2012-06-10T08:15:58.413 回答