为什么Clojure的地图解构看起来相反?

tar*_*aro 3 clojure

对地图进行解构看起来与我相反.谁能解释一下发生了什么?

我希望这是解构地图的正确形式

; =>(让[{:aa:bb} {:a 1:b 2}] [ab])

返回Exception Unsupported binding form: :a clojure.core/destructure/pb--4541 (core.clj:4029).Clojure文件说下面是正确的方法.但它看起来键和值是相反的.

这应该是正确的方式:

; =>(让[{a:ab:b} {:a 1:b 2}] [ab])[1 2]

在解构地图时会发生什么?

Chi*_*ron 6

它并没有真正逆转,实际上它是有道理的.它表示:将符号'a'绑定到与关键字关联的值:a

当地图使用关键字作为键时,您是否意识到这一点?

(let [{:keys [a b]} {:a 1 :b 2}] [a b])
Run Code Online (Sandbox Code Playgroud)

更整洁,优雅!

如果您的键是符号或字符串,则存在其他变体.