問題:
我們需要對一個 Clojure HashMap hm 裡的某個 path 做操作,插入 val 值。需要滿足的條件為:
- 如果該 path 為空,就插入空的 vector,並且在該 vector 裡插入 val
- 如果該 path 已經有一個 vector ,就把 val 插入 vector 的尾端
(if (nil? (get-in hm path)
(assoc-in hm path [val])
(update-in hm path conj val))
但是,這又略顯得重複、冗長
解法:
- (update hm path (fnil conj []) val)
- (update-in hm path (fnil conj []) val)