2012-09-25 7 views

Antwort

25

wie :as Werke für Funktionen scheint zu:

mit 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]} 

mit 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}} 

Sehen Sie diese tolle Blogeintrag: http://blog.jayfields.com/2010/07/clojure-destructuring.html

+3

lasse ich glaube, fn, defn usw. benutzen alle die s eine Destrukturierungssyntax. – JohnJ

+0

@JohnJ: Ja, um die Destrukturierungssemantik konsistent zu machen. – Ankur

+0

@John Das ist "wahr". Ich war zuerst sehr verwirrt auf dem Blogpost, weil es nur lets als Beispiele verwendet. Der Unterschied zwischen let und fn/defn ist, dass es eine bindende Form verwendet. –

Verwandte Themen