如何将Clojure命名空间转换为字符串?

时间:2016-03-14 20:25:29

标签: clojure

我正在尝试打印命名空间列表:

(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)))

如何将命名空间作为字符串?

2 个答案:

答案 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

祝你好运。