2012-09-25 15 views

Respuesta

25

parece que :as obras para las funciones también:

con vector

(defn test [[x y :as v]] 
    {:x x :y y :v v}) 

(test [1 2 3 4]) 
=> {:x 1 :y 2 :v [1 2 3 4]} 

con hash-map

(defn test2 [{x :x y :y :as m}] 
    {:x x :y y :m m}) 

(test2 {:x 1 :y 2 :z 3}) 
=> {:x 1 :y 2 :m {:x 1 :y 2 :z 3}} 

Ver esta entrada del blog excelente: http://blog.jayfields.com/2010/07/clojure-destructuring.html

+3

Creo dejó, fn, defn, etc. todos usan s ame la sintaxis de desestructuración – JohnJ

+0

@JohnJ: Sí, para hacer que la semántica desestructurante sea consistente. – Ankur

+0

@JohnJ Eso es "verdad". Al principio estaba muy confundido en la publicación del blog porque solo usa "lets" como ejemplos. La diferencia entre let y fn/defn es que usa una forma vinculante. –

Cuestiones relacionadas