Bagikan melalui


Ekspresi Lambda: Kata Kunci yang menyenangkan (F#)

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 .

Lihat juga