Mit einer Karte in Java können Sie schreiben map.computeIfAbsent(key, f)
, die überprüft, ob der Schlüssel bereits in der Karte vorhanden ist, und wenn nicht f
auf den Schlüssel ruft, um einen Wert zu generieren, und gibt diesen in der Karte ein. Sie haben auch map.putIfAbsent(key, value)
, die nur den Wert in die Karte einfügt, wenn der Schlüssel nicht bereits in der Karte vorhanden ist.Was entspricht Java computeIfAbsent oder PutIfAbsent in Clojure?
Ignoriert man die Tatsache, dass die Java-Methoden auch den Wert zurückgeben und stattdessen die neue Map zurückgegeben werden soll, was wäre der entsprechende Code in Clojure?
Das Beste, was ich mit so weit kommen habe, ist meine eigenen mit so etwas wie
(defn compute-if-absent [map key f]
(if (key map)
map
(assoc map key (f key))))
zu rollen Gibt es eine Alternative meinen eigenen zu rollen?
Ich nehme an, Sie bedeuten? "Enthält m-Taste" –
Ja, ich habe es behoben. –
Ich habe dies als die richtige Antwort für die Frage markiert, wie ich es gesagt habe, auch wenn ich jetzt denke, dass ich eigentlich gemeint habe, was z7sg beantwortet - ich habe zumindest dieser Antwort auch eine Stimme gegeben. –