Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az F# 4.6 több fejlesztést is hozzáad az F# nyelvhez.
Első lépések
Az F# 4.6 minden .NET Core-disztribúcióban és Visual Studio-eszközben elérhető. Ismerkedés az F# -tal további információért.
Névtelen rekordok
A névtelen rekordok az F# 4.6-ban bevezetett új típusú F# típusúak. Ezek a névvel ellátott értékek egyszerű összesítései, amelyeket nem kell deklarálni használat előtt. Deklarálhatja őket szerkezetként vagy referenciatípusként. Alapértelmezés szerint referenciatípusok.
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
Deklarálhatók az értéktípusok csoportosításához és teljesítményérzékeny forgatókönyvekben való működéshez is:
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
Nagyon hatékonyak, és számos forgatókönyvben használhatók. További információ a Névtelen rekordokról.
ValueOption függvények
Az F# 4.5-ben hozzáadott ValueOption típus mostantól "modulhoz kötött függvényparitást" ad meg az Option típussal. A leggyakrabban használt példák közül néhány a következő:
// 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
Ez lehetővé teszi, hogy a ValueOption ugyanúgy használható legyen, mint az Olyan helyzetekben, ahol az értéktípus javítja a teljesítményt.