1

名前空間オブジェクトをその名前で取得する方法はありますか?例えば:

(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

4

2 に答える 2

3

(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))
于 2012-04-18T00:01:05.460 に答える
2

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>
于 2012-04-17T23:59:17.523 に答える