Kotlin Lambdas

Ekspresi Lambda

Ekspresi lambda atau lambda adalah fungsi anonim; fungsi tanpa nama. Fungsi ini segera diteruskan sebagai ekspresi tanpa deklarasi. Sebagai contoh,

 fun main(args: Array) ( val greeting = ( println("Hello!")) // invoking function greeting() )

Saat Anda menjalankan program, hasilnya adalah:

 Halo!

Di sini, ekspresi lambda ditugaskan ke salam variabel. Ekspresi tidak menerima parameter apa pun dan tidak mengembalikan nilai apa pun dalam program ini.

Kemudian, fungsi (ekspresi lambda) dipanggil sebagai:

 salam() 

Contoh: Lambda Dengan Parameter dan Jenis Pengembalian

Program di bawah ini memiliki ekspresi lambda yang menerima dua bilangan bulat sebagai parameter, dan mengembalikan produk dari dua bilangan bulat tersebut.

 fun main(args: Array) ( val product = ( a: Int, b: Int -> a * b ) val result = product(9, 3) println(result) )

Saat Anda menjalankan program, hasilnya adalah:

 27

Di sini, ekspresi lambda adalah:

Perhatikan, ekspresi lambda diapit di dalam kurung kurawal.

Fungsi Tingkat Tinggi

Koltin memiliki dukungan yang bagus untuk pemrograman fungsional. Anda bisa meneruskan fungsi sebagai argumen ke fungsi lain. Selain itu, Anda dapat mengembalikan fungsi dari fungsi lain. Fungsi ini disebut fungsi tingkat tinggi.

Seringkali, ekspresi lambda diteruskan ke fungsi orde tinggi (bukan fungsi tipikal) untuk kenyamanan.

Contoh: Meneruskan Lambda ke Fungsi

Mari kita teruskan ekspresi lambda ke fungsi tingkat tinggi. Inilah cara Anda melakukannya.

 fun callMe(greeting: () -> Unit) ( greeting() ) fun main(args: Array) ( callMe(( println("Hello!") )) )

Saat Anda menjalankan program, hasilnya adalah:

 Halo!

Di sini, callMe()adalah fungsi tingkat tinggi (karena mengambil fungsi sebagai parameter). Parameter salam menerima lambda yang diteruskan ke callMe()fungsi sebagai:

 salam: () -> Satuan

Tanda kurung kosong menunjukkan bahwa, fungsi anonim yang diteruskan tidak menerima parameter apa pun. Dan, Unitkata kunci menyarankan bahwa fungsi anonim tidak mengembalikan nilai apa pun.

Lambdas sering digunakan saat bekerja dengan koleksi. Dan, ada beberapa fungsi bawaan yang tersedia di pustaka standar yang menggunakan lambda untuk mempermudah tugas kita. Anda akan melihat beberapa contoh di sini:

Contoh: Fungsi maxBy ()

Fungsi maxBy () mengembalikan elemen pertama yang menghasilkan nilai terbesar dari fungsi yang diberikan atau nulljika tidak ada elemen.

 data class Person(val name: String, val age: Int) fun main(args: Array) ( val people = listOf( Person("Jack", 34), Person("Shelly", 19), Person("Patrick", 13), Person("Jill", 12), Person("Shane", 22), Person("Joe", 18) ) val selectedPerson = people.maxBy(( person -> person.age )) println(selectedPerson) println("name: $(selectedPerson?.name)" ) println("age: $(selectedPerson?.age)" ) )

Saat Anda menjalankan program, hasilnya adalah:

 Orang (nama = Jack, umur = 34) nama: Jack umur: 34

Di sini, maxBy()function mengambil daftar objek Person dan mengembalikan objek Person yang memiliki usia maksimal.

it Kata Kunci: Digunakan untuk Parameter Tunggal

Dalam program di atas, ekspresi lambda hanya menerima satu parameter (daftar objek Person). Dalam kasus seperti itu, Anda bisa merujuk argumen dengan menggunakan kata kunci it.

Anda bisa mengganti

 val selectedPerson = people.maxBy ((person -> person.age))

dengan

 val selectedPerson = people.maxBy ((it.age)) 

dalam program di atas.

Contoh: Fungsi maxBy () dan beginWith ()

Program di bawah ini menghitung usia maksimum objek Orang yang dimulai dengan huruf S.

Kami akan menggunakan dua fungsi perpustakaan maxBy()dan startsWith()untuk menyelesaikan tugas ini. Fungsi starsWith () dikembalikan truejika dimulai dengan karakter tertentu yang diteruskan sebagai argumen.

 data class Person(val name: String, val age: Int) fun main(args: Array) ( val people = listOf( Person("Jack", 34), Person("Shelly", 19), Person("Patrick", 13), Person("Jill", 12), Person("Shane", 22), Person("Joe", 18) ) val selectedPerson = people .filter ( it.name.startsWith("S") ) .maxBy( it.age ) println(selectedPerson) println("name: $(selectedPerson?.name)" ) println("age: $(selectedPerson?.age)" ) )

Saat Anda menjalankan program, hasilnya adalah:

 Orang (nama = Shane, umur = 22) nama: Shane umur: 22

Bacaan yang Direkomendasikan

  • Penutupan Kotlin
  • Kotlin Dengan dan terapkan

Artikel yang menarik...