4

今日、私は奇妙なことに気づきました。プロジェクトに「参加」していない場合 (つまり、シェルが clojure プロジェクトのディレクトリにない場合) は、REPL を終了するために使用できます。exit

shell$ lein repl
REPL started; server listening on localhost port 43712
user=> (+ 3 4)
7
user=> (exit)
shell$ echo '<span>not in <s>kansas</s>clojure anymore</span>'

私がプロジェクトの「中」にいるとき (つまり、シェルが clojure プロジェクトのディレクトリにあるとき)は使用できませんexit:

shell$ cd my_clojure_project
shell$ lein repl
REPL started; server listening on localhost port 69237
user=> (* 8 4)
32
user=> (exit)
java.lang.Exception: Unable to resolve symbol: exit in this context (NO_SOURCE_FILE:2)
user=>

ここでの問題は何ですか?


Clojure のバージョン (両方の例):

user=> (clojure-version)
"1.2.1"

Leiningen バージョン (両方の例):

shell$ lein -v
Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM
4

1 に答える 1

5

leiningen.coreプロジェクトがあると名前空間が利用できないためと思われます。より具体的には、プロジェクトがある場合、プロジェクトのコードは別の ClassLoaderで評価され、クラスパスにはプロジェクトのみが含まれます。したがって、ライニンゲンの関数は使用できません。

Leiningen 2 REPL にはこの問題はありません。

于 2012-04-19T21:29:20.530 に答える