使用bs推导,我可以推导例如使用show
的{{1}}个实例。但是,尚不清楚我将如何使用相同的派生方法,而是为特定数据类型提供自定义显示实例。
示例:
[@deriving show]
使用上面的示例,我如何更改Bar以在例如中打印其整数十六进制?
使用bs推导,我可以推导例如使用show
的{{1}}个实例。但是,尚不清楚我将如何使用相同的派生方法,而是为特定数据类型提供自定义显示实例。
示例:
[@deriving show]
使用上面的示例,我如何更改Bar以在例如中打印其整数十六进制?
您应该可以使用@printer
来定义自己的打印机功能,如下所示:
[@deriving show]
type bar = Bar([@printer fmt => fprintf(fmt,"0x%x")] int);
fprintf
是本地定义的函数,它接受formatter,format string和由格式字符串指定的多个值。为简便起见,在这种情况下,我们部分地应用了它以避免必须显式传递int
值。等效于(fmt,n) => fprintf(fmt,"0x%x",n)
。
格式字符串指定数字应采用小写字母(%x
部分)的十六进制格式,并以0x
为前缀。因此31
将输出0x1f
。