是什么取代了弃用的any_to_string函数?

Str*_*ger 1 f#

我想现在是,Object.ToString()但我不确定......谢谢!

cfe*_*ern 8

我认为获得any_to_string功能的唯一方法是使用"%A"格式化程序.警告告诉你这个.

let any_to_string = sprintf "%A"

这不会调用.ToString().对于像列表这样的"简单"类型,.ToString()已经产生了良好的表示.但是在使用自己的自定义类型时,%A格式化程序更有用.例如,在树状结构的情况下,它沿着树行走.

如果您确实想要在对象上调用.ToString(),则可以使用'%O'格式化程序.

例:

type Tree = Node of Tree * Tree | Leaf
let myTree = Node(Node(Leaf,Leaf),Node(Leaf,Node(Leaf,Leaf)))
Run Code Online (Sandbox Code Playgroud)

在FSI:

> myTree.ToString();;
val it : string = "FSI_0002+Tree+Node"
> sprintf "%O" myTree;;
val it : string = "FSI_0002+Tree+Node"
> sprintf "%A" myTree;;
val it : string = "Node (Node (Leaf,Leaf),Node (Leaf,Node (Leaf,Leaf)))"
Run Code Online (Sandbox Code Playgroud)