Ответ 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
, вам нужно явно написать функцию лямбда.