Функции печати
F #, такие как printf
, могут разумно форматировать любой тип данных, если вы используете спецификатор формата %A
(они используют ToString
, если вы указали %O
). Вы можете реализовать ToString
, используя sprintf
, который возвращает отформатированную строку:
type Pos =
| Pos of int * int
override x.ToString() = sprintf "%A" x
Это печатает, например, «Pos (1, 2)», и это работает для большинства типов F # (списки, объединения, записи, кортежи). Это немного дольше, чем просто добавление deriving Show
, но, по крайней мере, вам не нужно реализовывать печать самостоятельно.