practice / blog

For personal blogging
1 stars 0 forks source link

dissoc-in #20

Open practice opened 8 years ago

practice commented 8 years ago

dissoc 사용법은 아래와 같다

(dissoc {:a 1 :b 2 :c 3} :c :b) ; 여러 키를 한번에 삭제
{:a 1} 

그런데 dissoc-in 함수는 없다.

https://clojuredocs.org/clojure.core/dissoc 에도 나와 있는 내용이긴 하지만 옮겨 보면 다음과 같이 update-in을 사용하면 된다.

;; There is no (dissoc-in) analogous to (get-in) or (assoc-in), but 
;; you can achieve a similar effect using (update-in):

(update-in {:a {:b {:x 3} :c 1}} [:a :b] dissoc :x)
;;=> {:a {:b {}, :c 1}}

그런데 위에서 [:a :b] 부분이 [] (빈 벡터)인 경우는 작동하지 않는다. 그럴 때는 그냥 dissoc을 해야 한다.