2012-11-07 76 views
4

當lein創建一個項目時,會創建一個core.clj文件以及其他目錄和文件。我想知道如果我能在其他Clojure項目源文件

../myproj/src/myproj/

到另一個源文件分割core.clj的內容,如果是,如何從core.clj訪問這些數據。

回答

4

IIRC(我沒有一個方便檢查的項目),src/myproj/目錄中的所有內容都位於'myproj命名空間中。因此,您的core.clj文件將位於名稱空間'myproj.core中。其他文件將在'myproj命名空間(例如,'myproj.other-fileother_file.clj)中自己的命名空間,並且可以通過做被拉入core.clj

(use 'myproj.other-file) 

,或者在ns聲明:

(ns myproj.core 
    (:use [myproj.other-file])) 
4

您可以拆分定義在多個文件,只要你喜歡,雖然它是地道的把一個單一命名空間中的一個文件,反之亦然。

見​​對於如何命名和加載文件和命名空間。要記住的一件事是名稱空間中的破折號轉換爲文件名中的下劃線。

+0

謝謝。我放棄了名字空間中的破折號。我對他們有太多的麻煩。 – octopusgrabbus

1

Leiningen的project.clj是定義一個項目 var只不過是一個帶有表示項目參數的鍵的映射(這是一個在Clojure中使用的成語def [name]創建一個var,[name]這個名字通常是一張地圖 - 最基本但非常有用的數據結構)。

看看Leiningen 2爲默認值的源代碼的defaults變種

雖這麼說,你叫defproject宏之前,你可以做任何你想做的project.clj - 這是一個Clojure的腳本,畢竟和你的想象力(和熟悉的Clojure)僅爲什麼可能會限制你。事實上,你可以在var創建之後做任何你想做的事情。把project.clj想象成一個Clojure應用程序來管理你的項目。

作爲一個例子,前型材在Leiningen 2被引入,有一個「特技」有一個與公共依賴單個變種:依賴性和:DEV-依賴性屬性。只是爲了再次警告你 - 在Leiningen 2中不再需要它,因爲它提供了簡介功能。如果您好奇它是如何在過去,請閱讀Testing your project against multiple versions of Clojure

相關問題