我使用
在clojure中声明了一张地图 (def finalMap {})
我在使用assoc的函数内附加值但它们没有附加,地图保持为空。我认为这是由于不变性,我可以通过某种方式使全局映射变为可变。函数是递归函数,每次调用函数时我都会附加值。
(defn func [arg1 arg2]
;(map append inside let)
(dorun (for [i (range 0 index)]
(do
(func(arg1 arg2))))))
你能用正确的方法帮助我吗?
答案 0 :(得分:1)
如果你想要可变地图那么你应该创建一个原子:
(def final-map (atom {}))
通常您也会使用assoc
为其添加更多键值对。但是,您需要使用swap!
才能调用assoc
:
(swap! final-map assoc :a "a value")
这将添加一个键/值对,其中键是关键字:a
,值是字符串“a value”。
查看其他examples of using assoc可能会有所帮助。要意识到上面的代码assoc
正在使用{em>旧值final-map
作为其第一个参数进行调用,并返回 new 值{ {1}}。