web-dev-qa-db-fra.com

F # string.Format

J'écris ma première bibliothèque F #

J'essaye d'utiliser string.Format et il se plaint qu'aucune fonction de ce type n'existe.

N'est-il pas disponible ou est-ce que je fais quelque chose de mal?

44
mamu

Si vous voulez éviter d'utiliser le nom complet, vous pouvez utiliser open en F #:

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

Cela devrait fonctionner à la fois dans F # interactive (entrez d'abord la clause open) et dans les applications compilées normales. L'essentiel est que vous devez écrire String avec des majuscules S. C'est parce que string en C # n'est pas un nom de type habituel - c'est un mot-clé faisant référence au System.String type.

Vous pouvez également jeter un œil à la fonction sprintf. C'est une alternative spécifique F # à String.Format qui a quelques avantages Nice - par exemple, il est de type vérifié:

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

Le compilateur vérifiera que les paramètres (string et int) correspondent aux spécificateurs de format (%s pour la chaîne et %d pour les entiers). La fonction fonctionne également mieux dans les scénarios où vous souhaitez utiliser une application de fonction partielle:

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

Cela produira une liste de chaînes contenant "numéro 1", "numéro 2" etc ... Si vous vouliez faire cela en utilisant String.Format, vous devrez écrire explicitement une fonction lambda.

106
Tomas Petricek

son nom complet est:

System.String.Format
3
Yin Zhu