在LightTable中运行leiningen Clojure项目

Rob*_*ens 4 clojure lighttable

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

core.clj:

(ns lein-test.core)

(defn -main [& args]
  (println "asdf"))
Run Code Online (Sandbox Code Playgroud)

当我与EVAL CTRL + SHIFT整个文件+进入,我看到nil通过ns在控制台并没有什么.如果我加

(-main)
Run Code Online (Sandbox Code Playgroud)

然后控制台显示'asdf'.lein run在命令提示符下产生预期的行为.我错过了什么?

noi*_*ith 6

Control + Shift + Enter评估命名空间.

评估命名空间不应该运行任何函数,除非您在顶层调用它们.在给定的代码库中,理想情况下应该只有一个在顶层调用的-main函数(通常是函数),并且应该通过在命名空间代码中调用它来设置它,而不是通过配置来调用它.

一切都在这里按预期工作.为了方便起见,您可以在注释块或文件的临时部分中调用(-main),或直接从repl接口调用它.