我正在尝试打印出我的二叉树,但 Clojure 让我很难正确打印出序列。
因此,例如,我有一个节点列表'(1 2 3)
。
在每次迭代中,我想在每个元素之前和之后打印出带有多个空格的节点。
(defn spaces [n]
(apply str (repeat n " ")))
太好了,这似乎有效。
所以,假设我有一个nodes
'(:a :b :c)
我想在一行上打印的列表,如上所述,空格。
(println (map #(str (spaces before) % (spaces (dec before))) nodes))
我有一个项目清单。使用地图我得到一个字符串对象列表。太好了,所以我可以打印它们!
但这给了我这个:
(clojure.lang.LazySeq@d0b37c31 clojure.lang.LazySeq@105879a9 clojure.lang.LazySeq@8de18242)
所以我用谷歌搜索了如何打印惰性序列,然后开始使用print-str
命令。根据文档,这会打印到一个字符串,然后返回。
(println (print-str (map #(str (spaces before) % (spaces (dec before))) nodes)))
但这给了我这个:
(clojure.lang.LazySeq@d0b37c31 clojure.lang.LazySeq@105879a9 clojure.lang.LazySeq@8de18242)
没有变化.. Hrm。任何帮助是极大的赞赏。