ClojureDocs

命名空间

clojure.pprint

A Pretty Printer for Clojure

clojure.pprint implements a flexible system for printing structured data
in a pleasing, easy-to-understand format. Basic use of the pretty printer is 
simple, just call pprint instead of println. More advanced users can use 
the building blocks provided to create custom output formats. 

Out of the box, pprint supports a simple structured format for basic data 
and a specialized format for Clojure source code. More advanced formats, 
including formats that don't look like Clojure data at all like XML and 
JSON, can be rendered by creating custom dispatch functions. 

In addition to the pprint function, this module contains cl-format, a text 
formatting function which is fully compatible with the format function in 
Common Lisp. Because pretty printing directives are directly integrated with
cl-format, it supports very concise custom dispatch. It also provides
a more powerful alternative to Clojure's standard format function.

See documentation for pprint and cl-format for more information or 
complete documentation on the Clojure web site on GitHub.

漂亮的实用程序,非常适合浏览较大的数据结构。请参阅pprint

clojure.pprint 中的变量

*^%

*print-base*
用于打印整数和有理数的基准。
*print-miser-width*
进入 miser 样式的列。根据 dispatch 表,miser 样式会在更多地方添加新行,以尝试保持行短,从而允许进一步嵌套。
*print-pprint-dispatch*
漂亮的打印 dispatch 函数。使用 with-pprint-dispatch 或 set-pprint-dispatch 进行修改。
*print-pretty*
如果你希望 write 使用漂亮的打印,则绑定为 true
*print-radix*
在整数和有理数之前打印基数说明符。如果 *print-base* 为 2、8 或 16,则使用的基数说明符分别为 #b、#o 或 #x。否则,基数说明符采用 #XXr 形式,其中 XX 是 *print-base* 的十进制值
*print-right-margin*
漂亮的打印会尝试避免任何超出此列的情况。将其设置为 nil 以便让 pprint 自行随意设置行长。这将忽略所有非强制性换行符。
*print-suppress-namespaces*
不使用符号打印命名空间。这在漂亮打印宏展开的结果时特别有用

c

cl-format
共同 Lisp 兼容格式化函数的实现。cl 格式根据给定的格式控制字符串将它的自变量格式化为一个输出流或字符串。它支持数据结构的复杂格式化。Writer 是一个 java.io.Writer 实例,它的值 true 时输出至 *out*,它的值为 nil 时输出至一个字符串,format-in 是格式控制字符串,剩余的自变量是将被格式化的数据。格式控制字符串是一个包含嵌入式“格式指令”的字符串,这些指令描述了如何格式化传入的各个自变量。如果 writer 是 nil,cl-format 返回已格式化的结果字符串。否则,cl-format 返回 nil。例如:(let [results [46 38 22]] (cl-format true "共有 ~[个~; 个~:; 个~]~:* ~d 个结果~:p: ~{~d~^, ~}~%" (count results) results)) 在 *out* 中打印:共有 3 个结果:46、38、22 详细的格式控制字符串文档参见 "Common Lisp the Language, 2nd edition",第 22 章(在线版:http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000)以及 Common Lisp HyperSpec 中的 http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm
code-dispatch
用于 Clojure 代码漂亮打印的漂亮打印分派函数。

f

formatter
创建一个函数,它可以直接运行 format-in。该函数为 fn [stream & args] ...,并且仅在流为 nil(表示输出到一个字符串)时返回 nil,此时它返回结果字符串。format-in 可以是控制字符串,也可以是以前编译过的格式。
formatter-out
创建一个函数,它可以直接运行 format-in。该函数为 fn [& args] ...,并且返回 nil。formatter 宏的此版本旨在与设置为适当 Writer 的 *out* 结合使用。具体而言,这意味着将用作漂亮打印机分派方法的一部分。format-in 可以是控制字符串,也可以是以前编译过的格式。
fresh-line
如果 *out* 还没有位于行首,则创建一个换行符。如果 *out* 不是一个漂亮打印机(它会跟踪列),此函数将始终输出一个换行符。

g

get-pretty-writer
返回一个 java.io.Writer,除非它已经是漂亮打印机,否则将它包装在一个漂亮的打印机代理中。一般而言,没有必要调用此函数,因为只要需要时,pprint、write 和 cl-format 都会调用它。但是,如果您希望跨调用保留状态,将需要用它包装。例如,当您希望用对 cl-format 多次调用生成列感知输出时,请参照此示例进行操作:(defn print-table [aseq column-width] (binding [*out* (get-pretty-writer *out*)] (doseq [row aseq] (doseq [col row] (cl-format true "~4D~7,vT" col column-width)) (prn)))) 现在,当您运行:user> (print-table (map #(vector % (* % %) (* % % %)) (range 1 11)) 8) 时,它将打印一个 1 到 10 的数字的平方和立方表格:1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000

p

pp
一个漂亮的打印便捷宏,它漂亮打印最后一个输出。它与 (pprint *1) 完全等效。
pprint
向可选输出写入器漂亮打印对象。如果未提供写入器,则向 *out* 当前绑定值打印对象。
pprint-indent
在漂亮打印流的此位置处创建一个缩进。此操作定义后续行的缩进方式。relative-to 可以是 :block 或 :current,具体取决于缩进是应相对于逻辑块的开头还是相对于当前的列位置计算。n 为一个偏移量。此函数旨在用于编写自定义分派函数时使用。输出发送到 *out*,它必须是一个漂亮打印写入器。
pprint-logical-block
将主体作为漂亮打印逻辑块执行,输出到 *out* 中,后者必须是一个漂亮打印写入器。当从 pprint 或 cl-format 中使用时,可以假定这一点。此功能旨在用于编写自定义调度函数时使用。在主体之前,调用者可以选择指定选项::prefix、:per-line-prefix 和:suffix。
pprint-newline
在漂亮打印流中打印条件换行符。kind 指定换行符是否为:linear、:miser、:fill 或:mandatory。此功能旨在用于编写自定义调度函数时使用。输出发送到 *out* 中,后者必须是一个漂亮打印写入器。
pprint-tab
在此处对漂亮打印流进行制表符。kind 指定 tab 是:line、:section、:line-relative 或:section-relative。Colnum 和 colinc 指定目标列和在输出已经超过原始目标时的目标增量。此功能旨在用于编写自定义调度函数时使用。输出发送到 *out* 中,后者必须是一个漂亮打印写入器。此功能尚未实现。
print-length-loop
loop 的一个版本,它最多迭代 *print-length* 次。这旨在用于漂亮打印机调度函数中。
print-table
以文本表格的形式打印地图集合。打印表头 ks,然后为每一行打印输出行,对应于 ks 中的键。如果未指定 ks,则使用行中第一项的键。

s

set-pprint-dispatch
将漂亮打印调度函数设置为匹配 (fn [obj] ...) 的函数,其中 obj 是要漂亮打印的对象。该函数将使用 *out* 设置为漂亮打印写入器来调用(它应对其进行打印)。有关示例函数,请参阅 clojure.pprint.dispatch.clj 中的 simple-dispatch 和 code-dispatch。
simple-dispatch
用于简单数据结构格式的漂亮打印调度函数。

w

with-pprint-dispatch
使用与函数绑定的漂亮打印调度函数执行主体。
write
编写受打印机控制变量当前绑定约束的对象。使用 kw-args 参数覆盖此调用(以及任何递归调用)中的单个变量。如果:stream 为 nil,则返回字符串结果,否则返回 nil。可以传递带有值的以下关键字参数:关键字含义默认值:stream输出或 nil 作家 true(表示 *out*):base用于编写有理数的基数:*print-base* 的当前值:circle*如果为 true,则标记循环结构:*print-circle* 的当前值:length在子列表中显示的最大元素:*print-length* 的当前值:level最大深度:*print-level* 的当前值:lines*输出的最大行数:*print-lines* 的当前值:miser-width进入吝啬模式的宽度:*print-miser-width* 的当前值:dispatch漂亮打印调度函数:*print-pprint-dispatch* 的当前值:pretty如果为 true,则进行漂亮打印:*print-pretty* 的当前值:radix如果为 true,则添加基数说明符:*print-radix* 的当前值:readably*如果为 true,则可读打印:*print-readably* 的当前值:right-margin右页边距列:*print-right-margin* 的当前值:suppress-namespaces如果为 true,则符号中没有命名空间:*print-suppress-namespaces* 的当前值 * = 尚未支持
write-out
受打印机控制变量当前绑定约束将对象写入 *out* 中。使用 kw-args 参数覆盖此调用(以及任何递归调用)中的单个变量。如果启用了漂亮打印,则 *out* 必须是一个 PrettyWriter。这是调用者的责任。此方法主要供漂亮打印调度函数使用,它们事先知道漂亮打印机将适当地设置其环境。普通库客户端应该使用标准的“write”接口。