Clojureでは、名前空間からvarを無効にするにはどうすればよいですか?
-
25-09-2019 - |
質問
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)
所属していません StackOverflow