我正在编写一个F#程序,它将一个字符串解析为AST类型,这是一个歧视联盟。打印F#歧视联盟
当我使用fsi
(在Mono + Mac OS X上)运行我的代码时,AST会以很好的格式打印出来。但是当我使用printfn "%s" <| ast.ToString()
时,我得到类似FSI_0002.Absyn+clazz
的东西。为所有歧视的工会类型写一个ToString
方法将是一件大事。
我该如何让价值打印fsi
这样做?
我正在编写一个F#程序,它将一个字符串解析为AST类型,这是一个歧视联盟。打印F#歧视联盟
当我使用fsi
(在Mono + Mac OS X上)运行我的代码时,AST会以很好的格式打印出来。但是当我使用printfn "%s" <| ast.ToString()
时,我得到类似FSI_0002.Absyn+clazz
的东西。为所有歧视的工会类型写一个ToString
方法将是一件大事。
我该如何让价值打印fsi
这样做?
除了丹尼尔的评论,这里是一个很好的博客文章,解释如何将其格式化以任何方式,你会想:
要鉴别联合转换成一个字符串,你应该使用sprintf "%A" ast
而不是ast.ToString()。
如果你想要Enum.GetName,你可以使用Microsoft.FSharp.Reflection
命名空间。见What is the Enum.GetName equivalent for F# union member?。
可能的重复https://stackoverflow.com/questions/1259039/what-is-the-enum-getname-equivalent-for-f-union-member – knocte