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

ece*_*ulm 3 clojure

我正在尝试打印一个名称空间列表:

(doseq [x (all-ns)] (println x))
Run Code Online (Sandbox Code Playgroud)

这将打印每个命名空间#<Namespace xxxxx>.我想得到每个名称空间xxxxx (没有#<Namespace>.我试过(name x),(symbol x)但我得到了ClassCastException clojure.lang.Namespace cannnot be cast to java.lang.Named,等等.

(doseq [x (all-ns)] (println (name x)))
(doseq [x (all-ns)] (println (str x)))
(doseq [x (all-ns)] (println (namespace x)))
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ung 6

用途ns-name:

(doseq [x (all-ns)] (println (ns-name x)))
Run Code Online (Sandbox Code Playgroud)

请注意,它ns-name给你一个符号.所以,如果你想要一个字符串只是使用(str (ns-name ns)).