Novinky v F# 4.7
F# 4.7 přidává několik vylepšení jazyka F#.
Začínáme
F# 4.7 je k dispozici ve všech distribucích .NET Core a nástrojích sady Visual Studio. Začněte s jazykem F# a získejte další informace.
Jazyková verze
Kompilátor F# 4.7 zavádí možnost nastavit efektivní jazykovou verzi prostřednictvím vlastnosti v souboru projektu:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
Můžete ho nastavit na hodnoty 4.6
, 4.7
, latest
a preview
. Výchozí hodnota je latest
.
Pokud ho nastavíte na preview
, kompilátor aktivuje všechny funkce F# preview implementované v kompilátoru.
Implicitní výnosy
Už není nutné použít yield
klíčové slovo v polích, seznamech, sekvencích nebo výpočetních výrazech, kde lze typ odvodit. V následujícím příkladu oba výrazy vyžadovaly yield
příkaz pro každou položku před F# 4.7:
let s = seq { 1; 2; 3; 4; 5 }
let daysOfWeek includeWeekend =
[
"Monday"
"Tuesday"
"Wednesday"
"Thursday"
"Friday"
if includeWeekend then
"Saturday"
"Sunday"
]
Pokud zavádíte jedno yield
klíčové slovo, musí se na něj použít také yield
každá další položka.
Implicitní výnosy se neaktivují při použití ve výrazu, který používá yield!
také k vytvoření něčeho podobného jako zploštění sekvence. V těchto případech je nutné pokračovat v používání yield
.
Identifikátory zástupných znaků
V kódu jazyka F# zahrnujícím třídy musí být identifikátor self-identifier vždy explicitní v deklaracích členů. Ale v případech, kdy se vlastní identifikátor nikdy nepoužívá, byla tradičně konvence použít dvojité podtržítko k označení beznázvových identifikátorů sebe sama. Teď můžete použít jedno podtržítko:
type C() =
member _.M() = ()
Platí to také pro for
smyčky:
for _ in 1..10 do printfn "Hello!"
Odpočinek odsazení
Před jazykem F# 4.7 vyžadovaly odsazení požadavky na odsazení primárních konstruktorů a argumentů statického člena nadměrné odsazení. Teď vyžadují pouze jeden obor odsazení:
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