clojure嵌入映射中的分解

clojure嵌入映射中的分解,clojure,Clojure,我在一个环处理程序函数中遇到了下面的解构- [{{:keys[params remote]}:params:as request}] 这很奇怪,因为这是我第一次看到两个级别的牙套。clojure是否支持n级分解?我在上面假设:params映射正在分解为[params remote]?是的,Clojure支持分解嵌套数据结构,尽管我不知道它是否支持任意深度嵌套。下面是一个分解贴图的简单示例,其中两个键中的一个对应值有一个向量: (let [{[x y] :pos c :color} {

我在一个环处理程序函数中遇到了下面的解构-

[{{: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”]