Куда делся sprintfn в F #? - PullRequest
       21

Куда делся sprintfn в F #?

4 голосов
/ 09 июля 2020

Есть несколько страниц, которые упоминают sprintfn в F #.

Одна из них - класс c: https://fsharpforfunandprofit.com/posts/fsharp-in-60-seconds/

Но также здесь , в ответе Томаса: Решаема ли "проблема выражения" в F #?

Однако я не могу использовать его, похоже, он не определен . С языка убрали?

1 Ответ

5 голосов
/ 10 июля 2020

Насколько я понимаю, эта функция сегодня недоступна в стандартной библиотеке F #. Учитывая, что у нас есть printf/printfn, это может показаться полезным дополнением. Вы, конечно, можете определить это сами:

let sprintfn fmt = 
  Printf.kprintf (fun s -> s + "\n") fmt

sprintfn "Hello %s!" "world"

Чтобы ответить на вопрос, куда он пропал - я не совсем уверен, что это когда-либо существовало. Мой ответ SO - это всего лишь набросок, а не исполняемый код, так что, возможно, это просто ошибка. Код, предоставленный Скоттом, использует эту функцию только в комментарии.

Несомненно, существовал старый шаблон Visual Studio "F # Script File" (я могу найти копию на моем компьютере примерно с 2010 г.), который имел следующее :

/// A string computed using the 'sprintfn' string layout function
let stringE = sprintf "stringC = %s, stringD.Length = %d" stringC stringD.Length

Если вы выполните поиск по всему GitHub , вы найдете несколько ссылок на это, но большинство из них являются просто копиями кода Скотта. Есть несколько библиотек, которые определяют свои собственные функции sprintfn, но их не так много.

Удивительно, но вы также можете загрузить выпуск кода F # от ноября 2010 г. из WebArchive , и это также нет упоминания о sprintfn. Так что я действительно думаю, что его никогда не было: -).

...