printfn "% A" "c" используя F # - PullRequest
5 голосов
/ 16 марта 2012

Запустив printfn "%A" "c", я получу "c".

Запустив printfn "%s" "c", я получу c.

Почему разница? То же самое касается char.

Ответы [ 2 ]

8 голосов
/ 16 марта 2012

Спецификатор %A пытается намекнуть на типы объектов - "c" пытается показать, что это строка. Когда вы делаете %s, компилятор знает, что вы хотите напечатать строку, поэтому он не печатает кавычки

4 голосов
/ 16 марта 2012

Поскольку printfn "%A" использует отражение, результаты отображаются так же, как значения, автоматически распечатанные F # Interactive.С другой стороны, %s только для строк и отображает содержимое строк.

Общий случай "%s" равен "%O" при использовании методов ToString.Спецификатор %A медленный, но полезный для структурных типов и типов без переопределенных методов ToString.

...