在clojure中将新的键值对添加到struct-map

Vuk*_*vić 4 clojure

我有这样的结构图

(def admin (struct-map person :first-name "Name" :last-name "Last name"))
Run Code Online (Sandbox Code Playgroud)

因此,现在我想向此地图添加新的键值对,并使它看起来像

(def admin (struct-map person :first-name "Name" :last-name "Last name" :username "username"))
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

我知道在那之后它不会是相同的结构,但是没关系。

Jar*_*314 5

如果您不关心保留结构,assoc将添加新的键值对。

(defstruct person :first-name :last-name)

(def admin (struct-map person 
             :first-name "Name" 
             :last-name "Last name"))

(assoc admin :username "username")
  ;=> {:first-name "Name", :last-name "Last name", :username "username"}
Run Code Online (Sandbox Code Playgroud)