2012-06-10 8 views
5

Soy nuevo en Clojure y me preguntaba si hay una manera de crear una secuencia de mapas a partir de dos o más secuencias.Crear seq de mapas a partir de dos o más seqs

Digamos que usted tiene:

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

Si fusionaron los que me gustaría conseguir lo que sería una serie de valores hash en Ruby, o en Clojure una secuencia de mapas?

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

gracias!

Respuesta

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

Jaja, que registró exactamente la misma respuesta en exactamente el mismo ¡hora! No puedo hacer nada más que +1 – huon

+2

Jaja, voy a +1 tuyo también, ¡qué coincidencia! :) –

+2

jajaja, gracias muchachos, arrojé una moneda y @MichielBorkent obtiene la respuesta – kreek

4

Estoy seguro de que hay una manera más idiomática para hacer esto, pero:

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

O incluso

(map #(do {:number %1, :letter %2, :shape %3}) numbers letters shapes) 
Cuestiones relacionadas