Что заменяет устаревшую функцию any_to_string? - PullRequest
1 голос
/ 15 мая 2010

Полагаю, сейчас Object.ToString(), но я не уверен ... Спасибо!

Ответы [ 3 ]

8 голосов
/ 15 мая 2010

Я думаю, что единственный способ получить функциональность 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)))"
3 голосов
/ 15 мая 2010

вы можете использовать sprintf:

let a = [1;2;3]
let b = sprintf "%A" a
1 голос
/ 05 января 2018

А как насчет функции string?

> string [1..3];;
val it : string = "[1; 2; 3]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...