chr*_*ris 13 namespaces clojure
在Clojure中,如何获取命名变量和函数的命名空间的名称?例如,改进以下内容:
(ns my-ns)
(def namespace-name "my-ns")
Run Code Online (Sandbox Code Playgroud)
上面的问题是,如果我想更改my-ns的名称,我还必须更改namespace-name的定义
chr*_*ris 14
亚瑟答案的简单修改效果很好.
(def namespace-name (ns-name *ns*))
Run Code Online (Sandbox Code Playgroud)
但是我想警告Clojure初学者
(defn namespace-name [] (ns-name *ns*))
Run Code Online (Sandbox Code Playgroud)
因为*ns*是动态绑定的,所以不能用于此问题.
当前命名空间存储在
*ns*
Run Code Online (Sandbox Code Playgroud)
由于您的函数在运行时被评估,因此当您调用它时,您将获得*ns*的值.
所以如果您想要保存它的副本.