首页 > 解决方案 > F# ToString() %A 格式在带有单声道的 linux 上不起作用

问题描述

我使用安装了单声道的 fsharpc 编译器。我想为我的某些类型覆盖 ToString() 方法。问题是它编译得很好,但printf "%A"只是给了我默认的调试输出。所以为了绝对确定我没有遗漏任何东西,我在 try.fsharp.org 上写了一个简单的测试并自己编译了相同的代码。仍然只是获得默认格式

那么.net框架中是否缺少某些东西?

标签: linuxf#mono

解决方案


为确保printf调用ToString(),请使用%Oformat 而不是%A

type MyType =
    {
        MyValue : string
    }
    override __.ToString() = "Hello!"

[<EntryPoint>]
let main argv =  
    let record = { MyValue = "A value" }
    printfn "%A" record   // { MyValue = "A value" }
    printfn "%O" record   // Hello!
    0

有关详细信息,请参阅此链接


推荐阅读