向clojure中的结构映射添加新的键值对

向clojure中的结构映射添加新的键值对,clojure,Clojure,我有这样的结构图 (def admin (struct-map person :first-name "Name" :last-name "Last name")) 所以,现在我想向这个映射添加新的键值对,让它看起来像 (def admin (struct-map person :first-name "Name" :last-name "Last name" :username "username")) 我该怎么做 我知道这之后它将不再是相同的结构,但这并不重要。如果您不想保留该结构,as

我有这样的结构图

(def admin (struct-map person :first-name "Name" :last-name "Last name"))
所以,现在我想向这个映射添加新的键值对,让它看起来像

(def admin (struct-map person :first-name "Name" :last-name "Last name" :username "username"))
我该怎么做


我知道这之后它将不再是相同的结构,但这并不重要。

如果您不想保留该结构,
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"}

谢谢效果很好。还有一个问题。如果我
defstruct
person在beggining使用用户名,我还可以逐渐添加键值对吗?是的。在大多数情况下,可以将结构映射视为哈希映射。唯一的区别是,
accessor
函数将对未包含在
defstruct
中的键引发异常,并且您不能
dissoc
a
defstruct
定义的键。但是,其他一切都应该像散列图一样工作。