Ara değerli dizeler

Enterpolasyonlu dizeler, bunlara F # ifadeleri eklemenize olanak sağlayan dizelerdir . Bir dizenin değerinin bir değer veya ifadenin sonucuna göre değiştirebildiği çok çeşitli senaryolarda faydalıdır.

Syntax

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

Açıklamalar

Enterpolasyonlu dizeler, bir dize sabit değerinin içindeki "delikler" içinde kod yazmanızı sağlar. Basit bir örnek verelim:

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

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

Her {} küme ayracı çifti arasındaki içerikler herhangi bir F # ifadesi olabilir.

Bir {} küme ayracı çiftini atlamak için, bunların ikisini de şöyle yazın:

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

Türü belirlenmiş dizeler

Enterpolasyonlu dizeler tür güvenliğini zorlamak için F # biçim belirticilerine de sahip olabilir.

let name = "Phillip"
let age = 30

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

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

Önceki örnekte, kod yanlışlıkla age olması gereken değeri yanlışlıkla geçirir name ve tam tersi de geçerlidir. Enterpolasyonlu dizeler biçim belirticileri kullandığından, bu, hafif bir çalışma zamanı hatası yerine bir derleme hatasıdır.

Düz metin biçimlendirmesi kapsamındaki tüm biçim belirticileri, enterpolasyonlu bir dizenin içinde geçerlidir.

Harfine enterpolasyonlu dizeler

F #, dize sabit değerlerini katıştırabilmeniz için üçlü tırnaklarla birlikte bulunan dizeleri destekler.

let age = 30

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

Enterpolasyonlu dizelerde ifadeleri hizalama

Enterpolasyonlu dizelerin içindeki ifadeleri | ve kaç boşluk olduğunu bir belirtim ile sola hizalayabilirsiniz veya sağa hizalayabilirsiniz. Aşağıdaki enterpolasyonlu dize sol ve sağ ifadeleri sırasıyla yedi boşlukla sola ve sağa hizalar.

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

Enterpolasyonlu dizeler ve FormattableString biçimlendirmeler

Ayrıca, için kurallara uygun biçimlendirme uygulayabilirsiniz 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."

Ayrıca, enterpolasyonlu bir dize bir tür FormattableString ek açıklaması aracılığıyla olarak denetlenebilir.

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

Tür ek açıklamanın, enterpolasyonlu dize ifadesinin kendisinde olması gerektiğini unutmayın. F #, bir enterpolasyonlu dizeyi örtük olarak bir öğesine dönüştürmez FormattableString .

Ayrıca bkz.