私はテクネと呼ばれるライニンゲンでセットアップされたプロジェクトを持っています。Scrub と呼ばれる型と foo と呼ばれる関数を含む、scrub と呼ばれるモジュールを作成しました。
techne/scrub.clj:
(ns techne.scrub)
(deftype Scrub [state]
Object
(toString [this]
(str "SCRUB: " state)))
(defn foo
[item]
(Scrub. "foo")
"bar")
techne/scrub_test.clj:
(ns techne.scrub-test
(:use [techne.scrub] :reload-all)
(:use [clojure.test]))
(deftest test-foo
(is (= "bar" (foo "foo"))))
(deftest test-scrub
(is (= (Scrub. :a) (Scrub. :a))))
テストを実行すると、次のエラーが表示されます。
Exception in thread "main" java.lang.IllegalArgumentException: Unable to resolve classname: Scrub (scrub_test.clj:11)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5376)
at clojure.lang.Compiler.analyze(Compiler.java:5190)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5357)
test-scrub を削除すると、すべて正常に動作します。:use techne.scrub が関数定義を「インポート」するのに型定義をインポートしないのはなぜですか? 型定義を参照するにはどうすればよいですか?