2
我遇到下面的解构中环处理函数 -解构Clojure中 - 嵌入式地图
[{{:keys [params remote]} :params :as request}]
它的奇怪,因为这是我第一次看到了牙套的两个层次。 clojure是否支持n级解构?我在上面假设:params地图正在被解构成[params remote]?
我遇到下面的解构中环处理函数 -解构Clojure中 - 嵌入式地图
[{{:keys [params remote]} :params :as request}]
它的奇怪,因为这是我第一次看到了牙套的两个层次。 clojure是否支持n级解构?我在上面假设:params地图正在被解构成[params remote]?
是的,Clojure支持解构嵌套数据结构,尽管我不知道它是否支持任意深度嵌套。下面是解构的地图,其中两个键中的一个具有矢量其相应价值的一个简单的例子:
(let [{[x y] :pos c :color}
{:color "blue" :pos [1 2]}]
[x y c])
你举的例子不止于此,虽然,因为它也使用了:keys
指令,结合本地变量与地图的键名称相同。以下是等效的:
(let [{{:keys [params remotes]} :params}
{:params {:params "PARAMS" :remotes "REMOTES"}}]
[remotes params])
(let [{{params :params remotes :remotes} :params}
{:params {:params "PARAMS" :remotes "REMOTES"}}]
[remotes params])
两者都评估为["REMOTES" "PARAMS"]
。
[Binding Forms(Destructuring)](http://clojure.org/special_forms#Special%20Forms--Binding%20Forms%20%28Destructuring%29) – 2013-03-08 03:59:16