Leiningen Uberjar lein run的不同结果
我的应用程序运行时,我在clojure repl或使用leiningen repl运行它,但是当我使用uberjar创建一个jar并运行应用程序时,它只读取我的集合的前2条记录。
我将其追踪到pmap,因此我创建了pmap的最简单可能的用法,并且它变得更加棘手。 为什么这个工作
(ns ktest.core
(:gen-class))
(defn -main []
(println (pmap identity (range 20))))
但不是这样
(ns ktest.core
(:gen-class))
(defn -main []
(pmap #(println %) (range 20)))
你被“懒虫”咬了。 pmap创建读取时将计算结果的序列。 当您使用println
运行时,它会读取结果以便打印它们,从而触发评估。 在这种情况下,你可以修复这将doall
或dorun
。 如果你只需要运行它的打印副作用,那么选择dorun
,如果你需要对这个结果做一些事情,然后选择doall
,结果保存在内存中。
(dorun (pmap #(println %) (range 20)))
由于分块序列,一些项目会打印出来。 有关pmap和分块序列的详细信息,请参阅此Jira问题。
链接地址: http://www.djcxy.com/p/51731.html