名前空間オブジェクトをその名前で取得する方法はありますか?例えば:
(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>