挿入文字列

補間された文字列は、F# の式を埋め込むことができる文字列です。 これは、値または式の結果に基づいて文字列の値が変わる可能性があるさまざまなシナリオで役立ちます。

構文

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

解説

補間された文字列を使用すると、文字列リテラル内の "穴" にコードを記述できます。 基本的な例を次に示します。

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

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

{} 中かっこのペアで囲まれたコンテンツに、任意の F# 式を指定できます。

{} 中かっこのペアをエスケープするには、次のように 2 つのペアを記述します。

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

型指定のある補間された文字列

補間された文字列に F# の書式指定子を使用して、タイプ セーフを適用することもできます。

let name = "Phillip"
let age = 30

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

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

上の例では、コードは name を渡す必要がある場所で誤って age 値を渡します (その逆も同様です)。 この補間された文字列では書式指定子が使用されているので、これは些細な実行時のバグではなくコンパイル エラーとなります。

補間された文字列内では、「プレーンテキストの書式指定」で説明されているすべての書式指定子が有効となります。

逐語的な補間された文字列

F# では、文字列リテラルを埋め込むことができるように、三重引用符を使用した逐語的な補間された文字列がサポートされています。

let age = 30

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

補間された文字列内での式の配置

| を使用し、スペースの数を指定することで、補間された文字列内で式を左揃えまたは右揃えにできます。 次の補間された文字列では、それぞれスペース 7 つを使用して、式を左揃えおよび右揃えにします。

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

補間された文字列と FormattableString 書式指定

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."

さらに、型の注釈によって、補間された文字列を FormattableString として型チェックできます。

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

型の注釈は、補間された文字列式自体に対して指定する必要があります。 F# では、補間された文字列は暗黙的に FormattableString に変換されません。

関連項目