2

Clojure と Eclipse の初心者なので、ご容赦ください。

Eclipse Juno で Clojure 1.5.1 を実行し、反時計回り (CCW) と Leiningen をインストールして、Eclipse デバッガーで Clojure コードを実行するプロセスをテストしています。次のファイルを使用しています。

(ns myproject.core)

(defn foo [str]
  (println str "Hello, World!")
)

(defn hello [who]
  (str "Hello " who "!"))

(println str "Hello, World!")and行にブレークポイントを設定(str "Hello " who "!"))し、Package Explorer ペインで「myproject」を選択し、Run-Debug As-Clojure Application をクリックすると、REPL が起動します。さて、ここに問題/問題があります: (hello "Fred")REPL を入力すると、

CompilerException java.lang.RuntimeException: Unable to resolve symbol: hello
    in this context, compiling:(NO_SOURCE_PATH:1:1)

プロシージャ コールを として修飾しようとすると、同じエラーが発生します(myproject.core/hello "Fred")。実行する唯一の方法は、最初に発行(require 'myproject.core)してから発行すること(myproject.core/hello "Fred")です。これを行うと、ブレークポイントが認識され、コードが適切な場所で中断され、変数が表示され、問題がなくなります。

関数名を完全に修飾する必要はありませんが、の使用は推奨されないことを理解してい(use 'myproject.core)ます。(require 'myproject.core)use

一方、Ctrl-Alt-S (これは Windows の場合) を使用して REPL にコードを「送信」することで REPL を開始すると、単純に入力(hello "Fred")して、期待される出力を取得できます。もちろん、この方法で実行してもデバッガーは起動せず、ブレークポイントも取得されません。

私の質問: Eclipse デバッガーでコードを実行する方法はありますか? コードが Ctrl-Alt-S 経由で REPL に "送信" されたときに名前空間が自動的に認識されるようにする方法はありますか?requireまたはを使用する必要useはありません。関数名を名前空間で完全修飾するには?

4

1 に答える 1

2

Ctrl-Alt-N は、CCW の「REPL をファイルの名前空間に切り替える」にバインドされています。REPL は名前空間「user」で開始されます。「myproject.core」に切り替えた後は、何もする必要はありませuserequire。REPL を使用して名前空間を切り替えることもできますin-ns

于 2013-10-12T01:25:33.207 に答える