向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
adefstruct
定义的键。但是,其他一切都应该像散列图一样工作。