如何在clojure中简化用宏编写事务?

时间:2016-05-23 02:41:37

标签: clojure neo4j macros

我目前正在编写一个使用neo4j的应用程序。我有一组用于与db交互的函数。有时,功能将成为交易的一部分,有时他们不会。我的任务是用这种形式编写一堆函数:

(def some-db-operation 
  ([arg1 arg2] 
    (let [txn (create-txn)]
      (some-db-operation arg1 arg2 txn)
      (close-txn txn)))
  ([arg1 arg2 txn] (do-thing txn arg1 arg2)))

理想情况下,我想这样做:

(def-txn some-db-operation [arg1 arg2 txn]
  (do-thing arg1 arg2 txn))

它会创建第一个函数。

1 个答案:

答案 0 :(得分:1)