Clojure:使用来自 REPL 的库函数
Posted
技术标签:
【中文标题】Clojure:使用来自 REPL 的库函数【英文标题】:Clojure: using library functions from REPL 【发布时间】:2013-10-04 17:03:04 【问题描述】:我刚开始使用 Clojure,从未使用过 Java
我了解如何从终端创建和运行一个 leiningen 项目,但我不明白如何在运行命令之前在 REPL 中加载库。
我正在尝试使用 clj-webdriver 构建一个简单的网络抓取工具;我的原始文件是这样的
(ns prova.core (:gen-class))
(use 'clj-webdriver.taxi)
(set-driver! :browser :firefox)
(defn -main
[& args]
(to "https://github.com/login")
(input-text "#login_field" "email")
(input-text "#password" "psw")
(click "input[name='commit']")
)
我(认为)最接近的方法是进入 webdriver src 文件夹并尝试此命令
penta@laptop:~/clj-webdriver-master/src/clj_webdriver$ clojure
Clojure 1.4.0
user=> (use 'taxi)
但它返回了
FileNotFoundException Could not locate taxi__init.class or taxi.clj on classpath: clojure.lang.RT.load (RT.java:432)
即使你在同一个文件夹中,taxy.clj 文件也确实存在。
那么,运行可以使用库函数的 REPL 的过程是什么?
非常感谢
【问题讨论】:
请注意,如果您只想尝试一个库而不创建项目,您可以使用lein-try。一个很酷的 leiningen 插件。 【参考方案1】:看一下leiningen构建工具,按照网站说明安装,新建一个项目。
lein new myproject
cd myproject
然后编辑project.clj
,在其中添加 clj-webdriver 作为依赖项:
(defproject myproject "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"]
[clj-webdriver "0.6.0"]])
然后键入lein repl
,REPL 将在类路径中使用 clj-webdriver 启动。您现在应该能够像在示例中那样继续。
【讨论】:
工作得很好,谢谢!对于像我这样的其他新手:在您执行“lenin repl”(通常您会执行“lenin run”)之后,REPL 将执行“defn -main”之前的所有代码,所以现在就像您正在输入并执行主函数一行一行。您也可以复制/粘贴多行,它们将按顺序处理。 ***表达式总是在加载代码时进行评估,通常不应包含副作用。将它们放在函数中并从 REPL 中调用它们。以上是关于Clojure:使用来自 REPL 的库函数的主要内容,如果未能解决你的问题,请参考以下文章
Clojure 的加载字符串在 repl 中有效,但在 `lein run` 中无效
设置 .emacs.d 文件夹后如何从 Emacs 运行 Clojure REPL