Neues in F# 4.6
F# 4.6 erweitert die Sprache F# mit mehreren Verbesserungen.
Erste Schritte
F# 4.6 ist in allen .NET Core-Distributionen und Visual Studio-Tools verfügbar. Weitere Informationen finden Sie unter Erste Schritte mit F#.
Anonyme Datensätze
Bei anonymen Datensätzen handelt es sich um einen neuartigen F#-Typ, der in F# 4.6 eingeführt wurde. Dabei handelt es sich um einfache Aggregate benannter Werte, die vor der Verwendung nicht deklariert werden müssen. Sie können sie entweder als Struktur oder als Verweistypen deklarieren. Standardmäßig sind sie Verweistypen.
open System
let getCircleStats radius =
let d = radius * 2.0
let a = Math.PI * (radius ** 2.0)
let c = 2.0 * Math.PI * radius
{| Diameter = d; Area = a; Circumference = c |}
let r = 2.0
let stats = getCircleStats r
printfn "Circle with radius: %f has diameter %f, area %f, and circumference %f"
r stats.Diameter stats.Area stats.Circumference
Sie können auch als Strukturen deklariert werden, wenn Sie in leistungssensiblen Szenarien Werttypen gruppieren möchten:
open System
let getCircleStats radius =
let d = radius * 2.0
let a = Math.PI * (radius ** 2.0)
let c = 2.0 * Math.PI * radius
struct {| Diameter = d; Area = a; Circumference = c |}
let r = 2.0
let stats = getCircleStats r
printfn "Circle with radius: %f has diameter %f, area %f, and circumference %f"
r stats.Diameter stats.Area stats.Circumference
Sie sind sehr leistungsfähig und können in zahlreichen Szenarien verwendet werden. Weitere Informationen finden Sie unter Anonyme Datensätze.
ValueOption-Funktionen
Der ValueOption-Typ, der in F# 4.5 hinzugefügt wurde, verfügt jetzt mit dem Option-Typ über eine „modulgebundene Funktionsparität“. Nachstehend sind einige gebräuchliche Beispiele aufgeführt:
// Multiply a value option by 2 if it has value
let xOpt = ValueSome 99
let result = xOpt |> ValueOption.map (fun v -> v * 2)
// Reverse a string if it exists
let strOpt = ValueSome "Mirror image"
let reverse (str: string) =
match str with
| null
| "" -> ValueNone
| s ->
str.ToCharArray()
|> Array.rev
|> string
|> ValueSome
let reversedString = strOpt |> ValueOption.bind reverse
So kann ValueOption genau wie Option in Szenarien verwendet werden, in denen ein Werttyp die Leistung verbessert.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für