Cadenas interpoladas

Las cadenas interpoladas son cadenas que permiten insertar expresiones de F# en ellas. Son útiles en una amplia gama de escenarios en los que el valor de una cadena puede cambiar en función del resultado de un valor o una expresión.

Sintaxis

$"string-text {expr}"
$"string-text %format-specifier{expr}"
$"""string-text {"embedded string literal"}"""

Comentarios

Las cadenas interpoladas permiten escribir código en "huecos" dentro de un literal de cadena. Este es un ejemplo básico:

let name = "Phillip"
let age = 30
printfn $"Name: {name}, Age: {age}"

printfn $"I think {3.0 + 0.14} is close to {System.Math.PI}!"

El contenido entre cada par {} de llaves puede ser cualquier expresión de F#.

Para escapar un par {} de llaves, escriba dos de ellas de la siguiente manera:

let str = $"A pair of braces: {{}}"
// "A pair of braces: {}"

Cadenas interpoladas con tipo

Las cadenas interpoladas también pueden tener especificadores de formato F# para aplicar la seguridad de tipos.

let name = "Phillip"
let age = 30

printfn $"Name: %s{name}, Age: %d{age}"

// Error: type mismatch
printfn $"Name: %s{age}, Age: %d{name}"

En el ejemplo anterior, el código pasa erróneamente el valor donde debe estar age name y viceversa. Dado que las cadenas interpoladas usan especificadores de formato, se trata de un error de compilación en lugar de un error sutil en tiempo de ejecución.

Todos los especificadores de formato cubiertos en formato de texto no cifrado son válidos dentro de una cadena interpolada.

Cadenas interpoladas textuales

F# admite cadenas interpoladas textuales con comillas triples para que pueda insertar literales de cadena.

let age = 30

printfn $"""Name: {"Phillip"}, Age: %d{age}"""

Alineación de expresiones en cadenas interpoladas

Puede alinear a la izquierda o alinear a la derecha expresiones dentro de cadenas interpoladas con y una | especificación del número de espacios. La siguiente cadena interpolada alinea las expresiones izquierda y derecha a la izquierda y a la derecha, respectivamente, por siete espacios.

printfn $"""|{"Left",-7}|{"Right",7}|"""
// |Left   |  Right|

Cadenas interpoladas y FormattableString formato

También puede aplicar formato que cumpla las reglas de FormattableString :

let speedOfLight = 299792.458
printfn $"The speed of light is {speedOfLight:N3} km/s."
// "The speed of light is 299,792.458 km/s."

Además, una cadena interpolada también se puede comprobar como un tipo a través FormattableString de una anotación de tipo:

let frmtStr = $"The speed of light is {speedOfLight:N3} km/s." : FormattableString
// Type: FormattableString
// The speed of light is 299,792.458 km/s.

Tenga en cuenta que la anotación de tipo debe estar en la propia expresión de cadena interpolada. F# no convierte implícitamente una cadena interpolada en FormattableString .

Vea también