Es gibt keine build-in assoc-if
Funktion in Clojure, aber du bist nicht der erste, der es braucht. Check this link mit einer Implementierung von assoc-if
von ALEX MILLER:
(defn ?assoc
"Same as assoc, but skip the assoc if v is nil"
[m & kvs]
(->> kvs
(partition 2)
(filter second)
flatten
(apply assoc m)))
Aber da flatten
ist rekursiv, es am besten ist es mit etwas zu ersetzen, die nicht (dank kotarak für den Hinweis) ist. Ein weiteres Problem dieser Implementierung ist, dass (apply assoc m)
in einer leeren Liste fehlschlägt. So ist es am besten, es zu ersetzen:
(defn ?assoc
"Same as assoc, but skip the assoc if v is nil"
[m & kvs]
(->> kvs
(partition 2)
(filter second)
(map vec)
(into m)))
Nichts als solches – Ankur