我正在尝试打印命名空间列表:
(doseq [x (all-ns)] (println x))
这会将每个命名空间打印为#<Namespace xxxxx>
。我想将每个命名空间设为xxxxx
(没有#<Namespace>
。我尝试(name x)
,(symbol x)
但我得到ClassCastException clojure.lang.Namespace cannnot be cast to java.lang.Named
等。< / p>
(doseq [x (all-ns)] (println (name x)))
(doseq [x (all-ns)] (println (str x)))
(doseq [x (all-ns)] (println (namespace x)))
如何将命名空间作为字符串?
答案 0 :(得分:6)
使用ns-name
:
(doseq [x (all-ns)] (println (ns-name x)))
请注意,ns-name
会为您提供一个符号。因此,如果您想要一个字符串,只需使用(str (ns-name ns))
。
答案 1 :(得分:2)
使用ns-name
功能:
(doseq [x (all-ns)] (println (ns-name x)))
Namespace function docs can be found here
祝你好运。