2013-11-26 41 views
1

在REPL命名空間,有一種方法來改變,以在其定義一個核心功能被排除一個命名空間,等改變到使用排除

(ns bla (:refer-clojure :exclude [==])) 

,而不必重新鍵入排斥,像下面?

user> (ns bla) 
IllegalStateException == already refers to: #'clojure.core.logic/== in namespace: bla clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88) 
user> (ns bla (:refer-clojure :exclude [==])) 
nil 
bla> 

回答

5

您想要in-nsns主要用於創建新的名稱空間,而in-ns主要用於切換到現有的名稱空間。從技術上講,如果它已經不存在,它們將創建一個新的名稱空間,但in-ns不會嘗試更改名稱空間(如果它已經存在)。

+0

如果名稱空間尚未加載,他可以'(doto'blah require in-ns)'。 – amalloy

3

我想你已經知道,從Emacs和使用CIDER您可以在REPL緩衝區的命名空間切換到當前緩衝區的命名空間與此鍵結合

C-c M-n. 

當然,你需要先具有顯式名稱空間和exclusión定義的clj文件