如何使用bs-deriving覆盖/提供自定义实例

使用bs推导,我可以推导例如使用show的{​​{1}}个实例。但是,尚不清楚我将如何使用相同的派生方法,而是为特定数据类型提供自定义显示实例。

示例:

[@deriving show]

使用上面的示例,我如何更改Bar以在例如中打印其整数十六进制?

qianjun8u8 回答:如何使用bs-deriving覆盖/提供自定义实例

您应该可以使用@printer来定义自己的打印机功能,如下所示:

[@deriving show]
type bar = Bar([@printer fmt => fprintf(fmt,"0x%x")] int);

fprintf是本地定义的函数,它接受formatterformat string和由格式字符串指定的多个值。为简便起见,在这种情况下,我们部分地应用了它以避免必须显式传递int值。等效于(fmt,n) => fprintf(fmt,"0x%x",n)

格式字符串指定数字应采用小写字母(%x部分)的十六进制格式,并以0x为前缀。因此31将输出0x1f

本文链接:https://www.f2er.com/2407519.html

大家都在问