26

您可以解构函数参数但仍然可以使用原始参数吗?我现在这样做的方式只是let在函数体内使用一个表单,但我想知道是否有更简洁的方法。

4

1 回答 1

32

似乎也: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

于 2012-09-25T01:54:52.967 回答