Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kata fun kunci digunakan untuk menentukan ekspresi lambda, yaitu fungsi anonim.
Sintaksis
fun parameter-list -> expression
Atau menggunakan _.Property notasi singkat:
_.
fun, daftar parameter, dan panah lambda (->) dihilangkan, dan _. merupakan bagian dari ekspresi di mana _ menggantikan simbol parameter.
Cuplikan berikut setara:
(fun x -> x.Property)
_.Property
Komentar
Daftar parameter biasanya terdiri dari nama dan, secara opsional, jenis parameter. Secara umum, daftar parameter dapat terdiri dari pola F# apa pun. Untuk daftar lengkap pola yang mungkin, lihat Pencocokan Pola. Daftar parameter yang valid mencakup contoh berikut.
// 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] -> …
Ekspresi adalah isi fungsi, ekspresi terakhir yang menghasilkan nilai pengembalian. Contoh ekspresi lambda yang valid meliputi yang berikut ini:
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)
Menggunakan Ekspresi Lambda
Ekspresi Lambda sangat berguna ketika Anda ingin melakukan operasi pada daftar atau koleksi lain dan ingin menghindari pekerjaan tambahan untuk menentukan fungsi. Banyak fungsi pustaka F# mengambil nilai fungsi sebagai argumen, dan sangat nyaman untuk menggunakan ekspresi lambda dalam kasus tersebut. Kode berikut menerapkan ekspresi lambda ke elemen daftar. Dalam hal ini, fungsi anonim memeriksa apakah elemen adalah teks yang diakhiri dengan karakter yang ditentukan.
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"
Cuplikan kode sebelumnya menunjukkan kedua notasi: menggunakan fun kata kunci, dan notasi singkat _.Property .