當lein創建一個項目時,會創建一個core.clj文件以及其他目錄和文件。我想知道如果我能在其他Clojure項目源文件
../myproj/src/myproj/
到另一個源文件分割core.clj的內容,如果是,如何從core.clj訪問這些數據。
當lein創建一個項目時,會創建一個core.clj文件以及其他目錄和文件。我想知道如果我能在其他Clojure項目源文件
../myproj/src/myproj/
到另一個源文件分割core.clj的內容,如果是,如何從core.clj訪問這些數據。
IIRC(我沒有一個方便檢查的項目),src/myproj/
目錄中的所有內容都位於'myproj
命名空間中。因此,您的core.clj
文件將位於名稱空間'myproj.core
中。其他文件將在'myproj
命名空間(例如,'myproj.other-file
爲other_file.clj
)中自己的命名空間,並且可以通過做被拉入core.clj
:
(use 'myproj.other-file)
,或者在ns
聲明:
(ns myproj.core
(:use [myproj.other-file]))
您可以拆分定義在多個文件,只要你喜歡,雖然它是地道的把一個單一命名空間中的一個文件,反之亦然。
見對於如何命名和加載文件和命名空間。要記住的一件事是名稱空間中的破折號轉換爲文件名中的下劃線。
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。
謝謝。我放棄了名字空間中的破折號。我對他們有太多的麻煩。 – octopusgrabbus