我已定义记录来存储用户详细信息和地址详细信息。
(defrecord User [id name address])
(defrecord Address [id location street city state])
(def usr (User. 1 "Abc"
(Address. 1 "Location 1" "Street" "NY" "US")))
我已使用以下代码将“名称”更新为“BCD”
(assoc usr :name "BCD")
Output:
#async_tea_party.core.User{:id 1, :name "BCD", :address #async_tea_party.core.Address{:id 1, :location "Location 1", :street "Street", :city "NY", :state "US"}}
(usr)
OutPut:
#async_tea_party.core.User{:id 1, :name "Abc", :address #async_tea_party.core.Address{:id 1, :location "Location 1", :street "Street", :city "NY", :state "US"}}
新值name
字段尚未更新,它仍然显示旧值。
如何永久更新“用户”记录中的“姓名”字段?
(def usr (User...))
是一种一成不变的。你无法改变它。
当你这样做时(assoc usr :name "BCD")
你没有改变它。你创建一个新的。为了做你想做的事,你需要一个原子。
(def usr (atom (User. 1 "Abc"
(Address. 1 "Location 1" "Street" "NY" "US"))))
(:name @usr) ;; "Abc"
(swap! usr assoc :name "BCD")
(:name @usr) ;; "BCD"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)