lein がプロジェクトをセットアップすると、core.clj ファイルが他のディレクトリやファイルと共に作成されます。core.clj のコンテンツを別のソース ファイルに分割できるかどうかを知りたいです。
../myproj/src/myproj/
もしそうなら、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]))
定義を好きなだけ多くのファイルに分割できますが、単一の名前空間を単一のファイルに配置するのは慣用句ですが、その逆も同様です。
ファイルと名前空間に名前を付けてロードする方法については、 http://clojure.org/libsを参照してください。覚えておくべきことの1つは、名前空間のダッシュはファイル名のアンダースコアに変換されるということです。
Leiningen のproject.cljは、プロジェクト パラメーターを示すキーを持つマップにすぎないプロジェクトvarを定義することです (Clojure ではdef[name]を使用して[name]という名前の var を作成する慣用句です。これは通常はマップです。最も基本的でありながら非常に有用なデータ構造)。
デフォルトについては、Leiningen 2 のソース コードのデフォルト変数を参照してください。
そうは言っても、 defprojectマクロを呼び出す前に、project.clj で好きなことを行うことができます。結局のところ、これは Clojure スクリプトであり、あなたの想像力 (および Clojure に精通している) は、あなたを制約するものにすぎません。実際、var が作成された後は、var で好きなことを行うことができます。project.clj は、プロジェクトを管理する Clojure アプリケーションと考えてください。
例として、Leiningen 2 でプロファイルが導入される前は、:dependencies および :dev-dependencies 属性の共通の依存関係を持つ単一の変数を持つ「トリック」がありました。もう一度警告します - Leiningen 2 ではプロファイル機能が提供されるため、不要になりました。過去の状況に興味がある場合は、Clojure の複数のバージョンに対してプロジェクトをテストするを読んでください。