sto scrivendo il mio primo F # bibliotecaF # string.Format
Sto cercando di usare string.Format
e si lamenta che non esiste tale funzione.
Non è disponibile o sto facendo qualcosa di sbagliato?
sto scrivendo il mio primo F # bibliotecaF # string.Format
Sto cercando di usare string.Format
e si lamenta che non esiste tale funzione.
Non è disponibile o sto facendo qualcosa di sbagliato?
Se si vuole evitare di usare il nome completo, è possibile utilizzare open
in F #:
open System
let s = String.Format("Hello {0}", "world")
Questo dovrebbe funzionare sia in F # interattivo (inserire prima la clausola open
e nelle normali applicazioni compilate. La cosa fondamentale è che è necessario scrivere String
con maiuscolo S
. Questo perché string
in C# non è un nome di tipo normale: si tratta di una parola chiave che si riferisce al tipo System.String
.
In alternativa, è anche possibile dare un'occhiata alla funzione sprintf
. Si tratta di un F # SPECIFICI alternativa al String.Format
che ha alcuni vantaggi bei - per esempio è di tipo controllato:
let s = sprintf "Hello %s! Number is %d" "world" 42
Il compilatore controllerà che i parametri (stringa e int) corrispondano alle identificatori di formato (%s
per archi e %d
per i numeri interi). La funzione funziona anche meglio in scenari in cui si desidera utilizzare l'applicazione funzione parziale:
let nums = [ 1 .. 10 ]
let formatted = nums |> List.map (sprintf "number %d")
Questo produrrà una lista di stringhe contenenti "numero 1", "numero 2", ecc ... Se si voleva fare questo usando String.Format
, dovresti scrivere esplicitamente una funzione lambda.
Vorrei poter invitare questo due volte per suggerire 'sprintf', che è una soluzione migliore per la maggior parte del tempo. –
'sprint' è sicuramente più idiomatico, ma potrebbe essere più lento quando viene chiamato frequentemente in un ciclo ... –
Wow-Sono sorpreso solo [come lento' sprintf' è in F #] (http://stackoverflow.com/domande/16742189/prestazioni-di-sprintf-vs-string-format). Buon punto –