如何找到符号的完全限定名称空间?

Hen*_*gon 4 namespaces clojure

如果我有一个符号,其命名空间是别名,如q/w,我怎样才能找到它的实际命名空间,比如actual.namespace/w?

我知道这resolve将给我完全限定的var,但我不知道如何获得var的命名空间.

我能做的最好的事情是:

 (defn fqns [s] (str (get (ns-aliases *ns*) (symbol (namespace s)))))
Run Code Online (Sandbox Code Playgroud)

当然有一种更简单的方法吗?

Ank*_*kur 8

您可以获取符号的名称空间对象,如下所示(如果您想将ns的名称作为字符串,那么只需在末尾调用str):

(defn fqns [s] (->> (resolve s) meta :ns))
Run Code Online (Sandbox Code Playgroud)