Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het fun trefwoord wordt gebruikt om een lambda-expressie te definiëren, een anonieme functie.
Syntaxis
fun parameter-list -> expression
Of gebruik de _.Property verkorte notatie:
_.
fun, parameterlijst en lambdapijl (->) worden weggelaten en het is een onderdeel van de _.expressie waarbij _ het parametersymbool wordt vervangen.
De volgende codefragmenten zijn equivalent:
(fun x -> x.Property)
_.Property
Opmerkingen
De parameterlijst bestaat doorgaans uit namen en, optioneel, typen parameters. Over het algemeen kan de parameterlijst bestaan uit F#-patronen. Zie Patroonkoppeling voor een volledige lijst met mogelijke patronen. Lijsten met geldige parameters bevatten de volgende voorbeelden.
// Lambda expressions with parameter lists.
fun a b c -> ...
fun (a: int) b c -> ...
fun (a : int) (b : string) (c:float) -> ...
// A lambda expression with a tuple pattern.
fun (a, b) -> …
// A lambda expression with a cons pattern.
// (note that this will generate an incomplete pattern match warning)
fun (head :: tail) -> …
// A lambda expression with a list pattern.
// (note that this will generate an incomplete pattern match warning)
fun [_; rest] -> …
De expressie is de hoofdtekst van de functie, waarvan de laatste expressie een retourwaarde genereert. Voorbeelden van geldige lambda-expressies zijn:
fun x -> x + 1
fun a b c -> printfn "%A %A %A" a b c
fun (a: int) (b: int) (c: int) -> a + b * c
fun x y -> let swap (a, b) = (b, a) in swap (x, y)
Lambda-expressies gebruiken
Lambda-expressies zijn vooral handig wanneer u bewerkingen wilt uitvoeren op een lijst of andere verzameling en wilt voorkomen dat u een functie extra werk definieert. Veel F#-bibliotheekfuncties nemen functiewaarden als argumenten en het kan met name handig zijn om in die gevallen een lambda-expressie te gebruiken. Met de volgende code wordt een lambda-expressie toegepast op elementen van een lijst. In dit geval controleert de anonieme functie of een element tekst is die eindigt op opgegeven tekens.
let fullNotation = [ "a"; "ab"; "abc" ] |> List.find ( fun text -> text.EndsWith("c") )
printfn "%A" fullNotation // Output: "abc"
let shorthandNotation = [ "a"; "ab"; "abc" ] |> List.find ( _.EndsWith("b") )
printfn "%A" shorthandNotation // Output: "ab"
In het vorige codefragment worden beide notaties weergegeven: met behulp van het fun trefwoord en de korte notatie _.Property .