Clojure - это функциональный язык программирования, и все его основные структуры данных неизменны и постоянны. Это также включает в себя вектор.
Ваш пример требует управления состоянием. Clojure предоставляет несколько абстракций для этого, из которых, я думаю, atoms лучше подходит для вашего использования. Ответ
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
#<[email protected]: [#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"}]>
Спасибо, что это сработало действительно замечательно :). Im совершенно новый для Clojure, можете ли вы порекомендовать какие-нибудь хорошие уроки, чтобы идти дальше. Спасибо – Jani
@ user723056, см. [Эту тему] (http://stackoverflow.com/questions/2578837/comparing-clojure-books). – missingfaktor