2012-06-10 31 views
5

Tôi mới dùng Clojure và tôi đã tự hỏi liệu có cách nào tạo ra một chuỗi bản đồ từ hai hay nhiều chuỗi.Tạo seq bản đồ từ hai hoặc nhiều seqs

Hãy nói rằng bạn có:

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

Nếu bạn sáp nhập những người tôi muốn có được những gì sẽ là một mảng băm trong Ruby, hoặc trong Clojure một chuỗi các bản đồ?

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

cảm ơn!

Trả lời

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"}) 
+1

Haha, chúng tôi đã đăng chính xác câu trả lời cùng một lúc giống hệt nhau thời gian! Tôi không thể làm gì khác ngoài +1 – huon

+2

Haha, tôi cũng sẽ +1 của bạn, đồng thời là gì? :) –

+2

lol, cảm ơn các bạn, tôi đã lật một đồng xu và @MichielBorkent nhận được câu trả lời – kreek

4

tôi chắc chắn rằng có một cách thành ngữ hơn để làm điều này, nhưng:

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

Hoặc thậm chí

(map #(do {:number %1, :letter %2, :shape %3}) numbers letters shapes) 
Các vấn đề liên quan