Clojure:boot-won';t显示日志
我正在为我的爱好项目写一些Clojure。现在,我正在实施用于迁移sql文件的引导任务 我有以下处理迁移的代码Clojure:boot-won';t显示日志,clojure,Clojure,我正在为我的爱好项目写一些Clojure。现在,我正在实施用于迁移sql文件的引导任务 我有以下处理迁移的代码 ; when executed from repl logs whatever printed by println (defn migrate-pending [config] (if (migration-table-exists? config) (for [to-migrate (get-pending-migrations config)] (migr
; when executed from repl logs whatever printed by println
(defn migrate-pending [config]
(if (migration-table-exists? config)
(for [to-migrate (get-pending-migrations config)]
(migrate to-migrate config))
(create-migration-table config)))
; this consumes the log
(core/deftask migrate
"Migrate up"
[]
(migrate-pending pg-uri))
migrate
函数只打印它得到的值boot
似乎会消耗日志,但通过repl
执行时会打印日志
这是预期的吗?您不应该做一些对有副作用的事情,因为这会“产生一个延迟的expr求值序列”。您应该改用
doseq
比编写打印内容的函数更好的是编写返回内容的函数。您不应该做一些与
for
有副作用的事情,因为这会“产生一个延迟的expr求值序列”。您应该改用doseq
比编写打印内容的函数更好的是编写返回内容的函数。您也可以尝试使用dorun函数包装,它会增强任何副作用
您也可以尝试使用dorun函数包装,它会增强任何副作用
如果用
doseq
替换for
,是否会改变情况?如果用doseq
替换for
,是否会改变情况?这会引发异常无法解析符号:在该上下文中迁移这会引发异常无法解析符号:在此上下文中迁移