我正在尝试使用Clojure来运行我的Leiningen项目。即使LightTable说连接在连接窗格中,它也不会执行,除非我手动调用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
产生预期的行为。我错过了什么?
答案 0 :(得分:6)
Control + Shift + Enter评估命名空间。
评估命名空间不应运行其任何功能,除非您在顶级调用它们。在给定的代码库中,理想情况下应该只有一个在顶层调用的函数(通常是-main
函数),并且应该通过在命名空间代码中调用它来设置它,但是就像你一样,通过配置。
这里的一切都按预期工作。为了方便起见,您可以在注释块或文件的临时部分中调用(-main),或直接从repl接口调用它。