Clojure:将值设置为键

Art*_*tem 0 lisp clojure

可能是,这是一个愚蠢的问题,但它可能对许多新手有所帮助。如何将键值对添加到地图?

我的意思是:

(defn init-item [v item]
  (let [{:keys [id value]} item]
    (-> v
        (assoc :{ID_AS_A_KEY} value))))
Run Code Online (Sandbox Code Playgroud)

我得到:

(init-item {} {:id "123456789" :value [:name "King" :surname "Leonid"]})
user=> {:123456789 [:name "King" :surname "Leonid"]}
Run Code Online (Sandbox Code Playgroud)

ama*_*loy 5

只是不要这样做。使用字符串本身作为您的地图关键字。没有理由将其设为关键字。如果不理会它,则工作起来要容易得多。

(defn init-item [v item]
  (assoc v (:id item) (:value item)))
Run Code Online (Sandbox Code Playgroud)