在 clojure 中重新加载一个 val
Reload a val in clojure
我在一些辅助函数旁边定义了一个数据连接值:
(def uri "datomic:dev://localhost:4334/dab")
(defn delete-db [] (d/delete-database uri))
(defn create-db [] (d/create-database uri))
(def conn (d/connect uri))
问题是,如果我调用 delete-db 然后调用 create-db,"conn" 值中的连接将被删除。所以我需要一种方法能够在完成 delete/create 循环后 'reload' conn 值。鉴于 "def values" 的不变性,我该怎么做?
我遇到了这个:http://www.rkn.io/2014/02/10/datomic-antipatterns-connnnn/ 它讨论了不使用 conn 作为值的原因,但是它只在进行查询时才有意义。我正在将 conn 传递给函数以进行交易。
我在一些辅助函数旁边定义了一个数据连接值:
(def uri "datomic:dev://localhost:4334/dab")
(defn delete-db [] (d/delete-database uri))
(defn create-db [] (d/create-database uri))
(def conn (d/connect uri))
问题是,如果我调用 delete-db 然后调用 create-db,"conn" 值中的连接将被删除。所以我需要一种方法能够在完成 delete/create 循环后 'reload' conn 值。鉴于 "def values" 的不变性,我该怎么做?
我遇到了这个:http://www.rkn.io/2014/02/10/datomic-antipatterns-connnnn/ 它讨论了不使用 conn 作为值的原因,但是它只在进行查询时才有意义。我正在将 conn 传递给函数以进行交易。