printf
, fprintf
等:全部接受%a
转换。
手册上说对于%a
:
“用户定义的打印机。采用两个参数,并将第一个参数应用于 outchan(当前输出通道)和第二个参数。因此,第一个参数的类型必须为 out_channel -> 'b -> unit,第二个参数的类型为 'b。因此,该函数产生的输出被插入到当前点的 fprintf 的输出中。”
我无法理解用户定义的打印机的用途,以及如何实现和使用它。有人可以解释动机并提供一个例子吗?
例如,当您想要打印复杂的数据结构时,为什么不能使用自定义函数将数据结构直接打印到字符串或输出?
“只打印复杂的数据结构”是什么意思?一旦定义了将数据结构转换为字符串的函数,您就可以做到这一点。也可以使用“默认表示”“转储”数据结构(请参阅,)但这更多的是为了调试。
话说回来;一个非常简单的例子%a
:
type ty = A | B
let ty_to_string = function
| A -> "A"
| B -> "B"
let print_ty chan v = output_string chan (ty_to_string v)
let _ = Printf.printf "%a" print_ty A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)