2010-01-16 58 views
2

當您使用requireuse加載它們時,是否有任何方法來重命名clojure庫?Clojure重命名已加載的庫

例如,有沒有辦法做這樣的事情

(require 'some.include.path.some-library :as something-else) 

,然後通過something-else/element-name參考some-library元素?

謝謝。

回答

8

http://clojure.org/libs看看:

一個簡單的lib中嵌入的解釋:

(ns com.my-company.clojure.examples.my-utils 
    (:import java.util.Date) 
    (:use [clojure.contrib.def :only (defvar-)]) 
    (:require [clojure.contrib.shell-out :as shell])) 
  • NS形式名字的lib的命名空間,並聲明其依賴關係。根據其名稱,該lib必須包含在classpath相對路徑中的Java資源中:com/my_company/clojure/examples/my_utils.clj(注意從句點到斜線和連字符到下劃線的翻譯)。
  • :import子句聲明瞭此lib使用java.util.Date並使其可用於在此lib中使用其非限定名稱進行編碼。
  • :使用子句只聲明clojure.contrib.def庫的依賴關係,僅用於其defvar函數。 defvar-可以在這個lib的代碼中使用它的非限定名稱。
  • :要求子句聲明瞭對clojure.contrib.shell-out lib的依賴關係,並允許使用其成員使用較短的名稱空間別名shell。
+0

':use'和':require'之間的關鍵區別只是後者的別名能力嗎? 'use'的文檔提到它就像'require',但是也對參數應用'refer'。我很難記住這些差異。 – seh 2010-01-16 15:34:27

+1

SEH:見http://stackoverflow.com/questions/871997/use-vs-require-in-clojure – edbond 2010-01-16 17:08:06

+0

是的,但有沒有辦法(需要[clojure.contrib:as contrib]),然後引用對象在clojure.contrib作爲,例如,contrib/def而不是clojure.contrib/def? – So8res 2010-01-19 15:54:13