相关疑难解决方法(0)

如何使用printf自定义自定义类型的输出?

我已经阅读了很多专家F#,正在构建一个实际的应用程序.在调试时,我已经习惯于传递这样的fsi命令,以使repl窗口中的内容清晰可见:

fsi.AddPrinter(fun (x : myType) -> myType.ToString())
Run Code Online (Sandbox Code Playgroud)

我想扩展它以使用printf格式化程序,所以我可以输入例如

printf "%A" instanceOfMyType 
Run Code Online (Sandbox Code Playgroud)

并控制自定义类型的输出.本书暗示可以做到这一点(第93页,"可以扩展通用结构格式以适用于任何用户定义的数据类型,F#网站上涵盖的主题"),但我没有找到任何关于如何实际上实现这一点.有谁知道怎么样?它甚至可能吗?

编辑:

我应该包含一个代码示例,它是我正在处理的记录类型,例如

type myType = 
    {a: int}        
    override m.ToString() = "hello"

let t = {a=5}
printfn "%A" t
printfn "%A" (box t)  
Run Code Online (Sandbox Code Playgroud)

两个印刷语句产生:

{a = 5;}
Run Code Online (Sandbox Code Playgroud)

printf f# string-formatting f#-interactive

30
推荐指数
2
解决办法
9423
查看次数

标签 统计

f# ×1

f#-interactive ×1

printf ×1

string-formatting ×1