Clojure 如果密钥存在:更新,否则:关联
在reduce循环中考虑这一点:Clojure 如果密钥存在:更新,否则:关联,clojure,clojurescript,Clojure,Clojurescript,在reduce循环中考虑这一点: (if (contains? m k) (update m k conj v) (assoc m k [v])) 有没有办法摆脱if语句?当映射中不存在k时,使用fnil处理v的nil值: (update m k (fnil conj []) v) 虽然fnil的答案更为精彩,但我发现以下内容更容易阅读,尤其是在不熟悉fnil的情况下: (assoc m k (conj (m k []) v)) 其中(m k[])返回m中k的值,或者如果m中不存在
(if (contains? m k)
(update m k conj v)
(assoc m k [v]))
有没有办法摆脱if语句?当映射中不存在
k
时,使用fnil
处理v
的nil值:
(update m k (fnil conj []) v)
虽然
fnil
的答案更为精彩,但我发现以下内容更容易阅读,尤其是在不熟悉fnil
的情况下:
(assoc m k (conj (m k []) v))
其中(m k[])
返回m
中k
的值,或者如果m
中不存在k
,则默认为[]
如果
k
是一个符号,那么(km[])
也会起作用。我花了一些时间去理解它,但是是的!明白了,回答得很好!沙扎姆,回答得好!