使用默认值对地图进行解构

有时,你希望在地图下解析密钥,该地图可能不在地图中,但你希望破坏结构值的默认值。你可以这样做:

(def my-map {:a 3 :b 4})
(let [{a :a
       b :b
       :keys [c d]
       :or {a 1
            c 2}} my-map]
  (println a b c d))
  ;= 3 4 2 nil