F# 4.7 の新機能
F# 4.7 では、F# 言語に複数の機能強化が加えられています。
開始
F# 4.7 は、すべての .NET Core ディストリビューションと Visual Studio ツールで使用できます。 詳細については、「F# の使用を開始する」をご覧ください。
言語バージョン
F# 4.7 コンパイラでは、プロジェクト ファイル内のプロパティを利用し、有効な言語バージョンを設定できます。
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
それを値 4.6
、4.7
、latest
、preview
に設定できます。 既定では、 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
.NET