Clojure에서 여러 맵을 병합하려고합니다.Clojure가 병합되어 nil 값을 무시합니다.
이(defn deep-merge
[& xs]
(if (every? map? xs)
(apply merge-with deep-merge xs)
(last xs)))
이 솔루션의 문제는지도 중 하나가 전무 경우, 그것은 이전의 모든 맵을 삭제하는 것입니다 (그래서 마지막지도가 전무 인 경우 : 나는 대부분의이 같은 모양, 온라인 많은 솔루션을 발견 , 전체 함수는 nil을 반환합니다). nil 값을 무시하는 정규 병합 함수에서는 그렇지 않습니다. nil 값을 무시하는 다른 간단한 병합 구현이 있습니까?
후손을 위해 이것은 원래'clojure '에 있던 내용을 변형 한 것 같다. 기여자 '를 영입하지 못하고 유지 보수를받지 못해서'clojure.core'에 들어간 적이 없다. 이 문제와 원본 코드에 대한 링크는 http://dev.clojure.org/jira/browse/CLJ-1468에서 찾을 수 있습니다. – lsh