【发布时间】:2017-06-11 15:42:05
【问题描述】:
探索 Clojure - 我正在通过 Clojure 为勇敢而真实的人工作。我创建了 hello world(在这种情况下,我是一个小茶壶)。正如书中建议的那样,我可以从 lein repl 运行它。
这本书的作者似乎是 emacs 的忠实粉丝。我对 Intellij Idea 很满意,因此安装了 Cursive 插件。然后我:
- 如 Cursive 网站上所示设置一个 repl “runner”。
- 尝试将 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
在下部窗格中,每个 cmets,我尝试了两种运行方式,两种方式都失败了,如下所示(我并不惊讶第二次失败,因为它正在调用 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 的cmets,我能够弄清楚该怎么做。答案是:
- 在下方窗格中输入 (clojure-noob.core/-main)
- 将光标定位到右括号的右侧
- 按回车键。
结果如下:
(clojure-noob.core/-main)
I'm a little teapot!
=> nil
告诉你这是一个菜鸟问题!
【问题讨论】:
-
不是您要寻找的答案,但对于 IDE,我强烈推荐 IntelliJ + Cursive。这太棒了,而且免费。使用该组合已有一年多了。
-
加载后手动运行
-main。 main 不一定会自动运行。 -
我认为我的 cmets 很清楚我正在运行 Cursive。 :-( 我正在编辑我的问题以显示我理解你的意思的结果。但是,也许我做错了什么。
-
您正在使用 Cursive,但它与 emacs 的集成可能很差。我只是想我会推荐 IntelliJ,因为我在这方面有很好的经验。
-
在 REPL 中,你是否运行过
(-main)?
标签: clojure read-eval-print-loop cursive