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.
A fun kulcsszó egy lambda kifejezés, vagyis egy névtelen függvény definiálására szolgál.
Szemantika
fun parameter-list -> expression
Vagy használja a _.Property rövidítést:
_.
fun, paraméterlista és lambda nyíl (->) ki van hagyva, és a _.kifejezés egy része, ahol _ a paraméter szimbóluma helyébe lép.
A következő kódrészletek egyenértékűek:
(fun x -> x.Property)
_.Property
Megjegyzések
A paraméterlista általában nevekből és adott esetben paraméterek típusaiból áll. Általánosságban elmondható, hogy a paraméterlista bármilyen F#-mintából állhat. A lehetséges minták teljes listáját a Mintaegyeztetés című témakörben találja. Az érvényes paraméterek listája az alábbi példákat tartalmazza.
// 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] -> …
A kifejezés a függvény törzse, amelynek utolsó kifejezése visszatérési értéket hoz létre. Érvényes lambdakifejezések például a következők:
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-kifejezések használata
A Lambda-kifejezések különösen akkor hasznosak, ha listában vagy más gyűjteményben szeretne műveleteket végrehajtani, és el szeretné kerülni a függvények definiálásának többletmunkáját. Sok F#-kódtárfüggvény argumentumként veszi fel a függvényértékeket, és ezekben az esetekben különösen kényelmes lehet lambdakifejezést használni. Az alábbi kód egy lambda kifejezést alkalmaz egy lista elemeire. Ebben az esetben a névtelen függvény ellenőrzi, hogy egy elem megadott karakterekkel végződő szöveg-e.
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"
Az előző kódrészlet mindkét jelölést megjeleníti: a fun kulcsszót és a rövidítést _.Property .