erklärte ich eine Karte in clojureanhängen Werte in einer globalen Karte in clojure
(def finalMap {})
Ich anhängen Wert, um es in einer Funktion mit Assoc verwenden, aber sie sind Anfügen nicht, wird die Karte leer bleiben. Ich denke, es liegt an der Unveränderlichkeit, kann ich irgendwie eine globale Karte veränderbar machen. Die Funktion ist eine rekursive und ich hänge Werte jedes Mal an, wenn die Funktion aufgerufen wird.
(defn func [arg1 arg2]
;(map append inside let)
(dorun (for [i (range 0 index)]
(do
(func(arg1 arg2))))))
Können Sie mir mit dem richtigen Weg helfen, dies zu tun?
die Lösung für dieses ist, Atom zu verwenden, wie in der Antwort vorgeschlagen. Wichtiger ist, was ist dein Endziel? Könnten Sie den Kontext angeben, in dem die Funktion verwendet wird? Vielleicht gibt es eine bessere Lösung, die keine veränderbaren Daten enthält. – leetwinski
übrigens: '(dorun (für [i (range 0 index)] ... könnte auf' (dimimes [i index] ... ') verkürzt werden, und' do' in 'dorun' ist veraltet, da der Körper von 'do *' Makros wird in einem impliziten 'do' Block ausgewertet – leetwinski
Eigentlich habe ich gerade angefangen clojure zu benutzen und habe einen Java Code in clojure konvertiert.Ich habe diese Funktion genau so implementiert, wie ich es in Java getan habe ein Weg in clojure, um dies zu tun, ohne veränderbare Karten zu verwenden. – user3083633