如何将地图解构为关键和价值

mur*_*a52 7 clojure

有没有办法去构建一个关键值对?我有一个函数,它将map作为参数,我想在params本身中提取key和value的值.我怎么做 ?

我可以使用矢量执行以下操作 -

((fn [[ab]](str ab))[ab])

我如何使用地图做同样/类似的事情 -

((fn [{kv}](str kv)){kv})

谢谢,穆尔塔扎

Art*_*ldt 19

函数arg列表中的map destructuring设计用于从地图中提取某些键并给出它们的名称,如下所示:

core> (defn foo [{my-a :a my-b :b}] {my-a my-b})
core/foo                                                                                     
core> (foo {:a 1 :b 2})
{1 2}
Run Code Online (Sandbox Code Playgroud)

我推荐这个教程.给出一个直接的等价物有点困难,((fn[{k v}] (str k v)) {k v})因为地图可能有很多键和许多值,因此解构代码无法分辨出你在哪里找到哪个键和值.按键解构更容易推理.

如果要随意选择地图中的第一个条目,可以将其提取出来并在单个地图条目上使用列表解构表单:

core> (defn foo [[k v]] {v k})
#'core/foo                                                                                     
core> (foo (first {1 2}))
{2 1}   
Run Code Online (Sandbox Code Playgroud)

在此示例中,使用列表解构表单[k v],因为首先将第一个映射条目作为向量返回.