Kotlin Academy · Pelajaran

Meneruskan Lambda ke Fungsi

Teruskan lambda sebagai argumen dan gunakan sintaks lambda di akhir.

Pelajaran 2 dari 413 langkah

Meneruskan Lambda ke Fungsi adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Fungsi yang Menerima Lambda

Fungsi tingkat tinggi adalah fungsi yang menerima sebuah fungsi (seperti lambda) sebagai parameter. Inilah cara map, filter, dan forEach bekerja.

Mendeklarasikan Fungsi Tingkat Tinggi

Gunakan tipe fungsi sebagai tipe parameter.
fun applyTwice(n: Int, op: (Int) -> Int): Int {
    return op(op(n))
}
println(applyTwice(3, { it * 2 }))  // 12

Sintaks Lambda di Akhir

Jika parameter terakhir adalah fungsi, Anda dapat memindahkan lambda ke luar tanda kurung. Inilah yang disebut sintaks lambda di akhir.
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))

// Standard:
applyTwice(3, { it * 2 })
// Trailing lambda:
applyTwice(3) { it * 2 }

Lambda di Akhir Tanpa Tanda Kurung

Jika lambda merupakan argumen ONLY, Anda dapat menghilangkan tanda kurung sepenuhnya.
fun execute(block: () -> Unit) = block()

// With parens:
execute({ println("Hello") })
// Without parens (idiomatic):
execute { println("Hello") }

Meneruskan Variabel Lambda

Anda dapat meneruskan referensi lambda yang tersimpan menggunakan nama variabelnya.
val double = { n: Int -> n * 2 }
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(5, double))  // 20

Referensi Fungsi dengan ::

Gunakan :: untuk meneruskan fungsi bernama sebagai argumen yang kompatibel dengan lambda.
fun triple(n: Int) = n * 3
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(2, ::triple))  // 18

Beberapa Parameter Lambda

Sebuah fungsi dapat menerima beberapa parameter lambda. Hanya lambda terakhir yang dapat menggunakan sintaks lambda di akhir.
fun transform(
    value: Int,
    before: (Int) -> Int,
    after: (Int) -> Int
) = after(before(value))

println(transform(5, { it * 2 }, { it + 1 }))  // 11

Meneruskan Lambda ke filter

filter menerima lambda predikat, yaitu fungsi yang mengubah elemen menjadi Boolean.
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)  // [2, 4, 6]

Merangkai Fungsi Tingkat Tinggi

Rangkai beberapa pemanggilan fungsi tingkat tinggi untuk membentuk alur data yang ekspresif.
val result = (1..10)
    .filter { it % 2 != 0 }  // odds
    .map { it * it }          // square
    .take(3)                  // first 3
println(result)  // [1, 9, 25]

Lambda yang Menangkap Variabel

Lambda dapat menangkap variabel dari cakupan di sekitarnya (closure). Di Kotlin, lambda bahkan dapat menangkap dan mengubah var.
var total = 0
listOf(1, 2, 3, 4).forEach { total += it }
println(total)  // 10

Mengembalikan Lambda dari Fungsi

Fungsi tingkat tinggi juga dapat mengembalikan lambda sehingga menghasilkan fungsi pabrik.
fun multiplierOf(factor: Int): (Int) -> Int {
    return { n -> n * factor }
}
val double = multiplierOf(2)
val triple = multiplierOf(3)
println(double(5))  // 10
println(triple(5))  // 15

Pemeriksaan Singkat

Kapan Anda dapat memindahkan lambda ke luar tanda kurung menggunakan sintaks lambda di akhir?

Ringkasan

Fungsi tingkat tinggi menerima lambda sebagai parameter. Sintaks lambda di akhir memindahkan lambda ke luar tanda kurung ketika lambda tersebut berada di posisi terakhir. :: meneruskan referensi fungsi bernama. Berikutnya: parameter 'it' implisit!
Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Meneruskan Lambda ke Fungsi” gratis?

Ya — teks lengkap “Meneruskan Lambda ke Fungsi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Meneruskan Lambda ke Fungsi”?

Teruskan lambda sebagai argumen dan gunakan sintaks lambda di akhir. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Meneruskan Lambda ke Fungsi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Apa Itu Lambda? Sintaks dan Tipe
  2. Meneruskan Lambda ke Fungsi
  3. it: Parameter Implisit
  4. filter, map, dan find pada Koleksi
← Kembali ke Kotlin Academy