F # строка. Формат - PullRequest
       12

F # строка. Формат

39 голосов
/ 05 июня 2010

Я пишу свою первую библиотеку F #

Я пытаюсь использовать string.Format и жалуется, что такой функции не существует.

Это недоступно или я делаю что-то не так?

Ответы [ 2 ]

101 голосов
/ 05 июня 2010

Если вы хотите избежать использования полного имени, вы можете использовать open в F #:

open System
let s = String.Format("Hello {0}", "world")

Это должно работать как в интерактивном режиме F # (сначала введите предложение open), так и в обычных скомпилированных приложениях. Ключевым моментом является то, что вы должны написать String в верхнем регистре S. Это потому, что string в C # не является обычным именем типа - это ключевое слово, относящееся к типу System.String.

Кроме того, вы также можете взглянуть на функцию sprintf. Это специфичная для F # альтернатива String.Format, которая имеет некоторые приятные преимущества - например, она проверена типом:

let s = sprintf "Hello %s! Number is %d" "world" 42

Компилятор проверит, чтобы параметры (string и int) соответствовали спецификаторам формата (%s для строки и %d для целых чисел). Функция также работает лучше в сценариях, где вы хотите использовать частичное применение функции:

let nums = [ 1 .. 10 ]
let formatted = nums |> List.map (sprintf "number %d")

Это создаст список строк, содержащих «число 1», «число 2» и т. Д ... Если вы хотите сделать это с помощью String.Format, вам придется явно написать лямбда-функцию.

3 голосов
/ 05 июня 2010

полное название:

System.String.Format
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...