Nieuw in F# 4.7
F# 4.7 voegt meerdere verbeteringen toe aan de F#-taal.
Aan de slag
F# 4.7 is beschikbaar in alle .NET Core-distributies en Visual Studio-hulpprogramma's. Ga aan de slag met F# voor meer informatie.
Taalversie
De F# 4.7-compiler introduceert de mogelijkheid om uw effectieve taalversie in te stellen via een eigenschap in uw projectbestand:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
U kunt deze instellen op de waarden4.6
, 4.7
, en latest
preview
. De standaardwaarde is latest
.
Als u deze preview
optie instelt, activeert uw compiler alle F#-preview-functies die in uw compiler zijn geïmplementeerd.
Impliciete opbrengsten
U hoeft het yield
trefwoord niet meer toe te passen in matrices, lijsten, reeksen of berekeningsexpressies waarin het type kan worden afgeleid. In het volgende voorbeeld hebben beide expressies de yield
instructie vereist voor elke vermelding vóór F# 4.7:
let s = seq { 1; 2; 3; 4; 5 }
let daysOfWeek includeWeekend =
[
"Monday"
"Tuesday"
"Wednesday"
"Thursday"
"Friday"
if includeWeekend then
"Saturday"
"Sunday"
]
Als u één yield
trefwoord introduceert, moet elk ander item er ook op zijn yield
toegepast.
Impliciete opbrengsten worden niet geactiveerd wanneer ze worden gebruikt in een expressie die ook wordt gebruikt yield!
om iets te doen zoals een reeks platmaken. In deze gevallen moet u deze blijven gebruiken yield
.
Jokerteken-id's
In F#-code met klassen moet de zelf-id altijd expliciet zijn in liddeclaraties. Maar in gevallen waarin de self-id nooit wordt gebruikt, is het gebruikelijk om een dubbele onderstrepingsteken te gebruiken om een naamloze zelf-id aan te geven. U kunt nu één onderstrepingsteken gebruiken:
type C() =
member _.M() = ()
Dit geldt ook voor for
lussen:
for _ in 1..10 do printfn "Hello!"
Inspringingsontruimingen
Vóór F# 4.7 waren de inspringingsvereisten voor primaire constructor- en statische lidargumenten overmatige inspringing vereist. Ze hebben nu slechts één inspringingsbereik nodig:
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