Clojureでは、名前空間からvarを無効にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4208680

質問

Clojureには、デフォルト値を定義するこのような行があります。

(def *http-port* 8080)

私は今、これらの種類の値を構成ユニットに形式化することを決めました、そして私は値を定義したくありません *http-port* そのため、この値を参照している場所を見つけて、新しい値を使用するように変更できます。言い換えれば、値を別の場所に移動することでリファクタリングを行っています。

私がこれをしている方法は、スライムをやめて、スライムセッションを再開しようとすることです。 Mavenのコンパイルフェーズエラー中に、これらのようなエラーがピックアップされ、一度に1つの参照を見つけて修正できます。次に、エラーを修正し、すすぎ、繰り返します。これは明らかにイライラします。

スライムセッションに接続している間、これを行うにはどうすればよいですか?

役に立ちましたか?

解決

私があなたを正しく理解しているなら、 ns-unmap あなたが望むことをするべきです:

user=> foo
java.lang.Exception: Unable to resolve symbol: foo in this context (NO_SOURCE_FILE:1)
user=> (def foo 1)
#'user/foo
user=> foo
1
user=> (ns-unmap (find-ns 'user) 'foo)
nil
user=> foo
java.lang.Exception: Unable to resolve symbol: foo in this context (NO_SOURCE_FILE:1)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top