次の方法で共有


F# 4.7 の新機能

F# 4.7 では、F# 言語に複数の機能強化が加えられています。

開始

F# 4.7 は、すべての .NET Core ディストリビューションと Visual Studio ツールで使用できます。 詳細については、「F# の使用を開始する」をご覧ください。

言語バージョン

F# 4.7 コンパイラでは、プロジェクト ファイル内のプロパティを利用し、有効な言語バージョンを設定できます。

<PropertyGroup>
    <LangVersion>preview</LangVersion>
</PropertyGroup>

それを値 4.64.7latestpreview に設定できます。 既定では、 latestです。

preview に設定した場合、コンパイラに実装されているすべての F# プレビュー機能がコンパイラによって有効になります。

暗黙的中断

型を推論できるとき、配列、リスト、シーケンス、計算式で yield キーワードを適用する必要がなくなりました。 次の例では、両方の式で、F# 4.7 より前のエントリごとに yield ステートメントが必要でした。

let s = seq { 1; 2; 3; 4; 5 }

let daysOfWeek includeWeekend =
    [
        "Monday"
        "Tuesday"
        "Wednesday"
        "Thursday"
        "Friday"
        if includeWeekend then
            "Saturday"
            "Sunday"
    ]

yield キーワードを 1 つ導入すると、他のすべての項目でもそれに yield を適用する必要があります。

暗黙的中断は、シーケンスのフラット化などを行うために yield! も使用する式で使用されたとき、アクティブになりません。 そのような場合、今でも引き続き yield を使用する必要がありまする

ワイルドカード識別子

クラスが含まれる F# コードでは、メンバー宣言で自己識別子を常に明示する必要があります。 ただし、自己識別子が決して使用されない場合、二重下線を使用し、名前のない自己識別子を示すことが従来の慣習でした。 現在は、アンダースコアを 1 つ使用できるようになりました。

type C() =
    member _.M() = ()

これは for ループにも適用されます。

for _ in 1..10 do printfn "Hello!"

インデントの緩和

F# 4.7 より前は、プライマリ コンストラクターと静的メンバーの引数のインデント要件で過剰なインデントが必要でした。 それが今、必要なインデント スコープは 1 つになりました。

type OffsideCheck(a:int,
    b:int, c:int,
    d:int) = class end

type C() =
    static member M(a:int,
        b:int, c:int,
        d:int) = 1