在clojure中java等效的星号(*)?

时间:2011-11-28 05:32:03

标签: java clojure

要编译整个类,我们编写“Library / *”(在Java中)。什么是clojure相当于这个?
使用REPL进行编译。

1 个答案:

答案 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一起使用。