2

探索 Clojure - 我正在通过Clojure For The Brave And True工作。我创建了 hello world(在这种情况下,我是一个小茶壶)。正如书中建议的那样,我可以从 lein repl 运行它。

这本书的作者似乎是 emacs 的忠实粉丝。我对Intellij Idea很满意,所以安装了Cursive插件。我然后:

  1. 设置一个 repl “runner”,如 Cursive 站点上所示。
  2. 尝试将 hello world 加载到 repl 中。它似乎已经这样做了。

怎么办?我想在加载编辑器的内容后,我可以运行它,但还没有弄清楚如何。显然,这是一个非常菜鸟的问题。

我的编辑器中的代码如下。

(ns clojure-noob.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "I'm a little teapot!")
)

repl 窗口分为两个窗格。上面的痛苦表明它已连接到本地 nREPL 服务器。然后,加载后它指出:

Loading src/clojure_noob/core.clj... done

在下部窗格中,根据评论,我尝试了 run 的两种变体,正如您在下面看到的那样,这两种变体都失败了(我并不惊讶第二次失败,因为它调用的是run,而不是函数)。

run -main
CompilerException java.lang.RuntimeException: Unable to resolve symbol: run in this context, compiling:(/tmp/form-init2302589649746976452.clj:1:4481) 
=> #object[clojure_noob.core$_main 0x24d21d67 "clojure_noob.core$_main@24d21d67"]
run clojure-noob.core/-main
CompilerException java.lang.RuntimeException: Unable to resolve symbol: run in this context, compiling:(/tmp/form-init2302589649746976452.clj:1:4481) 
=> #object[clojure_noob.core$_main 0x24d21d67 "clojure_noob.core$_main@24d21d67"]

回答 感谢@Carcigenicate 的评论,我能够弄清楚该怎么做。答案是:

  1. 在下方窗格中输入 (clojure-noob.core/-main)
  2. 将光标定位到右括号的右侧
  3. 按回车。

这导致了以下结果:

(clojure-noob.core/-main)
I'm a little teapot!
=> nil

告诉你这是一个菜鸟问题!

4

1 回答 1

0

这在下一个版本的 Cursive 中会容易得多 - EAP 有望在本周晚些时候或下周发布。您将拥有-main更容易访问的运行功能的 IntelliJ 标准方式: 在此处输入图像描述

当然,Clojure 方式是使用您所发现的 REPL,因此继续探索这种编程方式绝对值得鼓励!

于 2017-06-12T10:47:57.383 回答