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?
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.
son nom complet est:
System.String.Format