2011-11-28 77 views
3

要編譯整套的類,我們編寫「Library/*」(Java)。什麼是clojure等同於此?
使用REPL編譯。java等效的星號(*)在clojure中?

+0

只用編譯器/ REPL「編譯」?或者使用leiningen或maven?可以指定更多的細節嗎? – Sander

+0

@Sander我更新了這個問題。日Thnx! – vikbehal

+1

我不太確定這個問題在問什麼。你的意思是寫什麼等同於「javac Library/*。java」?或者如何導入類(正如Sander在下面解釋的那樣)? –

回答

3

一般來說,你擁有的加載文件/庫3種方式進入REPL:

  • 使用
  • 要求
  • 進口

使用是最強大的(也是最危險)。

要求告訴REPL您將要使用來自該命名空間的項目。例如:

(require 'clojure.string) 

允許你這樣做:

(clojure.string/split "hi, reader" #",") 

使用不一樣的要求,但使用還包括了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") 

因此,您也可以通過手動執行這些步驟來模擬require。

另一個有趣的功能是加載文件

(load-file "src/mylib/core.clj") 

和負載

(load "address_book/core") 

這些負載的Clojure代碼在類路徑的資源。如果路徑以斜槓開頭,或者相對於當前名稱空間的根目錄 目錄,則路徑將解釋爲 classpath-relative。

如果你想加載任何更復雜的文件,然後說2或3個文件,我認真推薦使用Leiningen。

編輯:您可能還需要使用:

(add-classpath "file:///home/../.../src/") 

要輕鬆的文件添加到類路徑,這樣你就可以與需要使用它們。