我正在构建一个原子模式,并在clj文件的底部添加了以下内容,该文件定义并处理模式和初始数据。每个调用下面的函数都会调用d/transact

(defn recreate-database []
  "To recreate db after running delete-database in bin/repl"
  (pt1-transact-schema)
  (pt1-transact-data)
  (pt2-transact-schema)
  (pt2-transact-data)
  (pt3-transact-schema)
  (pt3-transact-data))

默认情况下,我们只看到最后一个表单的返回值,但是我想查看或保存六个函数调用中每个函数的结果。

想知道这样做的好方法是什么。

想到了类似(map (comp println eval) [functions])的东西,但这是不对的。

最佳答案

还有一个很好的功能组合函数juxt:

user> ((juxt + - * /) 1 2)
;;=> [3 -1 2 1/2]

user> ((juxt (constantly 1) (constantly 2) (constantly 3)))
;;=> [1 2 3]

或者您的情况:
(def recreate-database (juxt pt1-transact-schema
                             pt1-transact-data
                             pt2-transact-schema
                             pt2-transact-data
                             pt3-transact-schema
                             pt3-transact-data))

09-05 04:55