如何搜索和解除多个后代密钥。

例:

(def d {:foo 123
        :bar {
          :baz 456
          :bam {
            :whiz 789}}})

(dissoc-descendents d [:foo :bam])
;->> {:bar {:baz 456}}

最佳答案

clojure.walk在这种情况下很有用:

(use 'clojure.walk)
(postwalk #(if (map? %) (dissoc % :foo :bam) %) d)

09-04 15:01