estoy escribiendo mi primera biblioteca # FF # string.Format
Estoy intentando utilizar string.Format
y se queja de que no existe tal función.
¿No está disponible o estoy haciendo algo mal?
estoy escribiendo mi primera biblioteca # FF # string.Format
Estoy intentando utilizar string.Format
y se queja de que no existe tal función.
¿No está disponible o estoy haciendo algo mal?
Si desea evitar el uso del nombre completo, puede utilizar open
en Fa #:
open System
let s = String.Format("Hello {0}", "world")
Esto debería funcionar tanto en F # interactiva (ingrese primero la cláusula open
) y en las aplicaciones compiladas normales. La clave es que debe escribir String
con mayúsculas S
. Esto se debe a que string
en C# no es un nombre de tipo habitual; es una palabra clave que se refiere al tipo System.String
.
Alternativamente, también podría echar un vistazo a la función sprintf
. Es un # específico de alternativa F a String.Format
que tiene algunas ventajas agradables - por ejemplo, que es de tipo verificado:
let s = sprintf "Hello %s! Number is %d" "world" 42
El compilador comprobará que los parámetros (de cuerda y int) coinciden con los especificadores de formato (%s
para cuerda y %d
para enteros). La función también funciona mejor en situaciones en las que desee utilizar la aplicación parcial de la función:
let nums = [ 1 .. 10 ]
let formatted = nums |> List.map (sprintf "number %d")
Esto producirá una lista de cadenas que contienen "número 1", "Número 2", etc ... Si quería hacer esto usando String.Format
, tendría que escribir explícitamente una función lambda.
Ojalá pudiera votar dos veces por sugerir 'sprintf', que es una opción mejor la mayoría del tiempo. –
'sprint' es ciertamente más idiomático, pero puede ser más lento cuando se lo llama con frecuencia en algún ciclo ... –
Guau, estoy sorprendido de lo lento que es' sprintf' en F #] (http://stackoverflow.com/questions/16742189/performance-of-sprintf-vs-string-format). Buen punto. –