Подтвердить что ты не робот

F # string.Format

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

полное имя:

System.String.Format