Je suis en train d'écrire mon premier F # bibliothèqueF # string.Format
Je tente d'utiliser string.Format
et il se plaint que pas une telle fonction existe.
N'est-ce pas disponible ou est-ce que je fais quelque chose de mal?
Je suis en train d'écrire mon premier F # bibliothèqueF # string.Format
Je tente d'utiliser string.Format
et il se plaint que pas une telle fonction existe.
N'est-ce 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 dans les deux F # interactive (entrez d'abord la clause open
) et dans les applications compilées normales. L'élément clé est que vous devez écrire String
avec majuscule S
. C'est parce que string
en C# n'est pas un nom de type habituel - c'est un mot-clé se référant au type System.String
. Vous pouvez aussi jeter un oeil à la fonction sprintf
. Il est une alternative F # de Spécifiques à String.Format
qui a quelques belles prestations - par exemple, il est de type vérifié:
let s = sprintf "Hello %s! Number is %d" "world" 42
Le compilateur vérifie que les paramètres (chaîne et int) correspondent aux spécificateurs de format (%s
pour cordes 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 voulez faire en utilisant String.Format
, vous devez écrire explicitement une fonction lambda.
Je voudrais pouvoir avoir deux fois la même chose pour suggérer 'sprintf', ce qui est une meilleure option la plupart du temps. –
'sprint' est certainement plus idiomatique, mais il peut être plus lent lorsqu'il est appelé fréquemment dans une boucle ... –
Wow-je suis surpris de juste [combien lent 'sprintf' est en F #] (http://stackoverflow.com/questions/16742189/performance-de-sprintf-vs-string-format). Bon point. –