Clojure 是一种函数式编程语言,它的所有主要数据结构都是不可变和持久的。这也包括向量。
您的示例需要管理状态。Clojure 为此提供了几个抽象,我认为原子最适合您的用例。
user=> (defrecord Item [name])
user.Item
user=> (def item-list (atom []))
#'user/item-list
user=> (defn add-item [db i] (swap! db #(conj % i)))
#'user/add-item
user=> (defn put-records []
(doseq [i (range 10)]
(add-item item-list (Item. "test"))))
#'user/put-records
user=> (put-records)
nil
user=> item-list
#<Atom@4204: [#user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"} #user.Item{:name "test"}]>