我正在尝试使用 Clojure 运行我的 Leiningen 项目。尽管 LightTable 说它在连接 Pane 中已连接,但除非我手动调用 main 函数,否则它不会执行。project.clj:
(defproject lein-test "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]]
:main lein-test.core)
core.clj:
(ns lein-test.core)
(defn -main [& args]
(println "asdf"))
当我使用 ctrl+shift+enter 评估整个文件时,我看到
nil
由 ns
控制台中没有任何内容。如果我添加(-main)
然后控制台显示“asdf”。
lein run
在命令提示符下会产生预期的行为。我错过了什么?
最佳答案
Control+Shift+Enter 评估命名空间。
评估命名空间不应运行其任何函数,除非您在顶层调用它们。在给定的代码库中,理想情况下应该只有一个在顶层调用的函数(通常是 -main
函数),并且不应该通过在命名空间代码中调用它来设置它,而是通过配置来设置它.
一切都在这里按预期工作。为了方便开发,您可以在注释 block 或文件的临时部分中调用 (-main),或直接从 repl 接口(interface)调用它。
关于clojure - 在 LightTable 中运行 leiningen Clojure 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226346/