Clojure打印的值与键在同一行

时间:2018-09-12 09:28:18

标签: clojure formatting

我如何漂亮地打印嵌套的数据结构,例如:

  • 该值始终与键在同一行上。
  • 键始终在换行符上。

此刻,我明白了:

(clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}))

在换行符上打印值“ aaa ...”和“ bbb ...”。

2 个答案:

答案 0 :(得分:1)

您还可以使用zprint,它非常努力地将值与键保持在同一行上。如果某个值与键不在同一行(即在当前的“宽度”之内),它将把该值(默认为缩进)放在下一行。您可以更改线宽,还可以更改是否必须缩进放置在下一行的内容。

zprint具有许多附加功能,可更有效地打印地图(尤其是在REPL上)。它将对键进行排序,您可以指定要首先输出的某些键。您可以为某些按键涂上与其他按键不同的颜色。它具有许多功能,旨在使人们可以更轻松地从Clojure映射中获取更多信息。

答案 1 :(得分:-1)

您可以将clojure.pprint/*print-right-margin*设置为一个较大的数字,这样它将尊重您的最长价值。

(binding [clojure.pprint/*print-right-margin* 100]
  (clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                          :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}))
#=> {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
     :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}

或做一些肮脏的举动,并在全局范围内设置此变量

(alter-var-root #'clojure.pprint/*print-right-margin* (constantly 100))
(clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"})
#=> {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
     :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}