要编译整个类,我们编写“Library / *”(在Java中)。什么是clojure相当于这个?
使用REPL进行编译。
答案 0 :(得分:3)
通常,您有3种方法将文件/库加载到REPL中:
使用是最强大的(也是最危险的)。
Require告诉REPL您将使用该命名空间中的项目。例如:
(require 'clojure.string)
允许你这样做:
(clojure.string/split "hi, reader" #",")
使用与Require相同,但是使用也包括ns到当前命名空间的所有变量。
导入与java库一起使用,如下所示:
(import 'java.util.Date)
所以你可以
(Date.)
要求(因此使用)“引擎盖下”使用了许多其他功能:
(require '[clojure.test :as test] :verbose)
(clojure.core/load "/clojure/template")
(clojure.core/load "/clojure/walk")
(clojure.core/in-ns 'clojure.template)
(clojure.core/alias 'walk 'clojure.walk)
(clojure.core/in-ns 'clojure.test)
(clojure.core/alias 'temp 'clojure.template)
(clojure.core/load "/clojure/test")
因此,您也可以通过手动执行这些步骤来模拟需求。
另一个有趣的功能是load-file
(load-file "src/mylib/core.clj")
并加载
(load "address_book/core")
这些从类路径中的资源加载Clojure代码。路径被解释为 classpath-relative,如果它以斜杠或相对于根开头 否则为当前命名空间的目录。
如果你想加载任何更复杂的东西,然后说2或3个文件,我认真推荐使用Leiningen。
编辑:您可能还想使用:
(add-classpath "file:///home/../.../src/")
要轻松地将文件添加到类路径,因此您可以将它们与require一起使用。