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

时间:2010-05-15 01:51:39

标签: f#

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

3 个答案:

答案 0 :(得分: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)))

和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)))"

答案 1 :(得分:3)

你可以使用sprintf:

let a = [1;2;3]
let b = sprintf "%A" a

答案 2 :(得分:1)

string功能怎么样?

> string [1..3];;
val it : string = "[1; 2; 3]"