有没有办法通过名称获取命名空间对象?例如:
(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
所以在这个例子中我需要 function 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
所以在这个例子中我需要 function 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>