我想使用SQLKorma执行一些SQL语句。起初,我写了下面的代码:“For”失败,但“循环”工作
(let [sqls (-> (slurp "resources/database.sql")
(str/split #";")
butlast)]
(for [sql sqls]
(k/exec-raw sql)))
但原因不明,这是行不通的。 for循环完全跳过。然而这工作:
(let [sqls (-> (slurp "resources/database.sql")
(str/split #";")
butlast)]
(loop [sqls sqls]
(if (not (empty? sqls))
(do
(k/exec-raw (first sqls))
(recur (rest sqls))))))
为什么会发生这种情况?为什么for循环失败?
在Clojure'for'不是一个循环,它是列表理解。不要让这个名字欺骗你。 – ivant