Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
fun anahtar sözcüğü, bir lambda ifadesi, yani anonim bir işlev tanımlamak için kullanılır.
Sözdizimi
fun parameter-list -> expression
Veya kısaltma gösterimini _.Property kullanarak:
_.
fun, parametre-listesi ve lambda oku (->) atlanır ve _. parametresi, parametre simgesinin yerini aldığı _ifadenin bir parçasıdır.
Aşağıdaki kod parçacıkları eşdeğerdir:
(fun x -> x.Property)
_.Property
Açıklamalar
Parametre listesi genellikle adlardan ve isteğe bağlı olarak parametre türlerinden oluşur. Daha genel olarak , parametre listesi herhangi bir F# desenlerinden oluşabilir. Olası desenlerin tam listesi için bkz . Desen Eşleştirme. Geçerli parametre listeleri aşağıdaki örnekleri içerir.
// 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] -> …
İfade, son ifadesi bir dönüş değeri oluşturan işlevin gövdesidir. Geçerli lambda ifadelerine örnek olarak şunlar verilebilir:
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 İfadeleri kullanma
Lambda ifadeleri özellikle bir listede veya başka bir koleksiyonda işlem yapmak ve işlev tanımlama işleminin fazladan çalışmasını önlemek istediğinizde kullanışlıdır. Birçok F# kitaplık işlevi işlev değerlerini bağımsız değişken olarak alır ve bu durumlarda lambda ifadesi kullanmak özellikle kullanışlı olabilir. Aşağıdaki kod, bir listenin öğelerine lambda ifadesi uygular. Bu durumda anonim işlev, öğenin belirtilen karakterlerle biten bir metin olup olmadığını denetler.
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"
Önceki kod parçacığı her iki gösterimi de gösterir: anahtar sözcüğünü fun kullanma ve kısaltma _.Property gösterimi.