犹太人: 谢谢您对这个问题的关注!
在这种情况下,我想定义一个不变的银行帐户记录
(defrecord account [ name balance statements])
(def cash-account (->account :cash 0.0 []))
我有一个将deposit
钱存入该帐户的功能,并且将返回account
的新记录
(.deposit cash-account 100.0 )
;; returns a new cash-account with attributes
;; name = :cash balance= 100, statment=[ [(2018,1,1),100 ] ]
随着越来越多的充值和提现,字段statement
列表将随着内部越来越多的交易而扩展。
我的问题是:
经过1000笔交易后,最新帐户收益的statment
字段中就有1000个元素。
第1001次交易发生时:
Clojure是否会在旧帐户记录的statment
字段中 * copy * 1000个交易,并追加新交易,将其保存到新帐户记录中?
或Clojure只是 * append * 将新交易记录到旧帐户记录中,并提供新的指针,使其看起来像新帐户记录一样,例如持久性地图?
感谢您的帮助,非常感谢
答案 0 :(得分:2)
来自https://clojure.org/reference/datatypes#_deftype_and_defrecord:
因此,在您的情况下,它不会复制事务,而是使用持久性数据结构,因此看起来就像已追加事务。
>答案 1 :(得分:0)