Clojure:将值设置为键
也许,这是一个愚蠢的问题,但它可能会帮助许多新手。如何将键值对添加到映射 我的意思是:Clojure:将值设置为键,clojure,lisp,Clojure,Lisp,也许,这是一个愚蠢的问题,但它可能会帮助许多新手。如何将键值对添加到映射 我的意思是: (defn init-item [v item] (let [{:keys [id value]} item] (-> v (assoc :{ID_AS_A_KEY} value)))) 我得到: (init-item {} {:id "123456789" :value [:name "King" :surname "Leonid"]}) user=> {:1234
(defn init-item [v item]
(let [{:keys [id value]} item]
(-> v
(assoc :{ID_AS_A_KEY} value))))
我得到:
(init-item {} {:id "123456789" :value [:name "King" :surname "Leonid"]})
user=> {:123456789 [:name "King" :surname "Leonid"]}
我想这就是你想要做的:
(defn init-item
[dest-map item]
(let [item-id-str (:id item)
item-val (:value item)
item-id-kw (keyword item-id-str)]
(assoc dest-map item-id-kw item-val)))
(let [all-items {:a 1 :b 2 :c 3}
item-1 {:id "123456789"
:value [:name "King" :surname "Leonid"]}]
(init-item all-items item-1)
;=> {:a 1, :b 2, :c 3, :123456789 [:name "King" :surname "Leonid"]}
Clojure具有函数name
、symbol
和keyword
,用于在字符串和符号/关键字之间进行转换。由于您已经将ID作为字符串,因此只需调用关键字
即可对其进行转换
确保始终打开浏览器选项卡。只是不要这样做。使用字符串本身作为映射键。没有理由让它成为关键词。如果你不去管它,工作起来就容易多了
(defn init-item [v item]
(assoc v (:id item) (:value item)))
@好吧,我不熟悉Clojure。我想做的是向JavaScript中的某个集合添加一个项:
函数fn(col,item){return{……col[item.id]:item.value}
。我很抱歉这样解释:)这是一个空映射(集合),我想添加键值对。