4

我正在尝试使用 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 评估整个文件时,我看到控制台中没有任何内容nilns如果我添加

(-main)

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

4

1 回答 1

6

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

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

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

于 2014-01-20T04:53:46.653 回答