我想打印一个(int * 'a) list
类型的元组列表。例如用于打印此元组列表
[(3, "toto");(1, "a")]
或此列表
[(3, 4);(1, 7)]
我该怎么做?
答案 0 :(得分:3)
不存在对打印列表,元组或更一般的任何类型的内置支持。您必须明确,而且由于列表可以包含任何类型,而元组可以是任何类型的产品,因此您可以自己对其进行解构并适当地设置其格式。
下面是一个函数的示例,该函数遍历列表,解构每个元组,并用逗号分隔元组的项目和用分号分隔元组本身的格式:
__len__
The documentation for Printf列出了您可以通过这种方式打印的其他类型,以及要使用的占位符。
答案 1 :(得分:2)
使用Fmt
(它是Format上的改进api),通过首先为一对int
和string
定义一个由{分隔的打印机,可以打印元组列表。 {1}}:
comma
下一步,我们可以为打印机创建一个let pair_printer = Fmt.(pair ~sep:comma int string)
元组列表,并用分号分隔:
int * string
最后,我们可以将此打印机用于:
let list_printer = Fmt.(list ~sep:(const pf ";@ ") pair_printer)