繁体   English   中英

Clojure 打印值与键在同一行

[英]Clojure print with values the same line as keys

如何漂亮地打印嵌套数据结构,以便:

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

目前,我得到了这个:

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

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

您也可以使用zprint ,它非常努力地将值保持在与键相同的行上。 如果一个值不适合与键位于同一行(即在当前“宽度”内),它将将该值(默认情况下缩进)放在下一行。 您可以更改行宽,还可以更改是否在必须这样做时将放在下一行的内容缩进。

zprint 有许多附加功能可以更有用地打印地图(特别是在 REPL 中)。 它将对键进行排序,您可以指定要首先输出的某些键。 您可以将某些键的颜色与其他键不同。 它具有一系列功能,旨在让人们可以更轻松地从 Clojure 地图中获取更多信息。

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

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

或者做一些肮脏的举动并全局设置这个var

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM