7

lein がプロジェクトをセットアップすると、core.clj ファイルが他のディレクトリやファイルと共に作成されます。core.clj のコンテンツを別のソース ファイルに分割できるかどうかを知りたいです。

../myproj/src/myproj/

もしそうなら、core.clj からそのデータにアクセスする方法。

4

3 に答える 3

7

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]))
于 2012-11-07T14:40:50.933 に答える
4

定義を好きなだけ多くのファイルに分割できますが、単一の名前空間を単一のファイルに配置するのは慣用句ですが、その逆も同様です。

ファイルと名前空間に名前を付けてロードする方法については、 http://clojure.org/libsを参照してください。覚えておくべきことの1つは、名前空間のダッシュはファイル名のアンダースコアに変換されるということです。

于 2012-11-07T14:40:06.973 に答える
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 の複数のバージョンに対してプロジェクトをテストするを読んでください。

于 2012-11-08T16:48:49.340 に答える