2012-09-25 4 views

答えて

25

はあまりにも機能のための:as作品のように思える:

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

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

で、この素晴らしいブログ記事を参照してください:http://blog.jayfields.com/2010/07/clojure-destructuring.html

+3

私は聞かせ信じて、FN、 defnなどはすべてsを使いますame destructuring syntaxです。 – JohnJ

+0

@ JohnJ:はい、構造化セマンティクスを一貫させるためです。 – Ankur

+0

@JohnJそれは本当です。私は最初にブログ投稿で混乱しました。なぜなら、それは単に例を使っているからです。 letとfn/defnの違いは、バインディング形式を使用していることです。 –

関連する問題