有沒有一種方法可以通過名稱獲取名稱空間對象?例如:名稱空間對象的名稱
(def ns-symbol (ns-name *ns*)) ;; get namespace name as symbol
(def ns-object (ns-by-name ns-as-str)) ;; convert it back to namespace object
所以在這個例子中,我需要功能ns-by-name
。
有沒有一種方法可以通過名稱獲取名稱空間對象?例如:名稱空間對象的名稱
(def ns-symbol (ns-name *ns*)) ;; get namespace name as symbol
(def ns-object (ns-by-name ns-as-str)) ;; convert it back to namespace object
所以在這個例子中,我需要功能ns-by-name
。
(ns-name *ns*)
返回一個符號不是一個字符串,那麼您的NS-AS-STR是名不副實......
(type (ns-name *ns*))
clojure.lang.Symbol
鑑於此,將其轉換回來就像...
(find-ns (ns-name *ns*))
#<Namespace user>
如果你真的想要納姆命名空間電子是一個字符串...
(def ns-as-str (str (ns-name *ns*)))
(def ns-object (find-ns (symbol ns-as-str))
的find-ns
功能可能會做的伎倆:
user=> (def ns-as-str (ns-name *ns*))
#'user/ns-as-str
user=> (def ns-object (find-ns ns-as-str))
#'user/ns-object
user=> ns-object
#<Namespace user>
'發現,ns'似乎是更地道,所以我接受了@ sw1nn的答案,但'創建-ns'肯定會工作了。謝謝。 – ffriend 2012-04-18 00:10:56
其實我很感興趣的是如何從任何表示中獲取名稱空間對象,無論是字符串還是符號,所以沒有多注意返回類型'ns-name'。感謝您的注意,併爲您解答。 – ffriend 2012-04-18 00:09:02