你能解析一个函数参数但仍然可以使用原始参数吗?我现在这样做的方法是在函数体内部使用let
形式,但我想知道是否有更简洁的方法。
答案 0 :(得分:28)
似乎: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