1

データベース操作を行うために小さな名前空間を作成しましたが、それを別の名前空間内から使用したいと考えています。通常、ファイルを同じディレクトリに置いてから実行します

(ns program (:require [other-ns :as other]) (:gen-class))

必要なことはそれだけでしょう。ただし、これは Clojure CLR では機能しません。コンパイラは、other-ns について知らないと文句を言います。では、これを行う適切な方法は何ですか?名前空間ごとに個別のアセンブリがありますか?

[編集] 別の例

別の.clj

  (ns another)

  (defn hello [name] (str "Hello " name))

プログラム.clj

  (ns program
    (:require [another :as a])
    (:gen-class))

repl に program.clj をロードすると、次のメッセージが表示されます。

FileNotFoundException ロード パスに another.clj.dll または another.clj が見つかりませんでした。clojure.lang.RT.load (d:\work\clojure-clr\Clojure\Clojure\Lib\RT.cs:3068)

4

1 に答える 1

0

同じディレクトリfilea.cljとfileb.cljに2つのファイルを作成しました。filea.cljは次のとおりです。

(ns filea)

(defn hi []
  (println "hi from filea"))

fileb.cljは次のとおりです。

(ns fileb
  (require [filea :as a])
  (:gen-class))

(defn -main []
  (println "hi from fileb")
  (a/hi))

次に、これらのファイルが存在して実行されているディレクトリに移動しました。

C:\ temp \ multi-ns> clojure.compilefilebfilebをにコンパイルします。--59ミリ秒。

そして私がそれを実行したとき、私は見ました:

C:\ temp \ multi-ns> c:\ Tools \ clojure-clr-1.3.0-Debug-4.0 \ fileb.exe hi from fileb hi from filea

vsClojureを使用していますか、それともVSの外部でコードを記述していますか?

于 2012-04-11T11:11:56.590 に答える