Kotlin Academy · Pelajaran

Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan

Pilih fungsi cakupan yang tepat berdasarkan receiver, tipe nilai kembalian, dan tujuan penggunaannya.

Pelajaran 4 dari 414 langkah

Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Lima Fungsi, Dua Sumbu

Fungsi cakupan Kotlin bervariasi pada dua sumbu: gaya objek penerima (this atau it) dan nilai yang dikembalikan (objek penerima atau hasil lambda). Pilih berdasarkan tujuan.

Matriks Keputusan

apply: this / objek penerima. also: it / objek penerima. run: this / lambda. let: it / lambda. with: this / lambda (tanpa objek penerima melalui titik).

apply: Konfigurasikan dan Kembalikan

Gunakan apply untuk konfigurasi objek dalam rantai bergaya pembangun.

class Config {
    var host: String = ""
    var port: Int = 0
}
fun main() {
    val cfg = Config().apply {
        host = "localhost"
        port = 8080
    }
    println("${cfg.host}:${cfg.port}")
}

also: Efek Samping

Gunakan also untuk mencatat log, memvalidasi, atau memicu efek samping sambil meneruskan objek penerima.

fun main() {
    val items = listOf(1, 2, 3, 4)
        .also { println("got ${it.size} items") }
        .filter { it % 2 == 0 }
    println(items)
}

let: Transformasi dan Keamanan Null pada Cakupan

Gunakan let untuk transformasi yang aman terhadap null atau untuk membatasi cakupan variabel.

fun main() {
    val name: String? = "Ada"
    val length = name?.let { it.length } ?: 0
    println(length)
}

run: Akses Banyak Anggota dengan Hasil

Gunakan run saat menghitung hasil dari banyak anggota objek penerima—menghemat awalan it..

class User(val name: String, val age: Int)
fun main() {
    val description = User("Ada", 35).run {
        "Name: $name, Age: $age"
    }
    println(description)
}

with: Mengelompokkan Operasi pada Objek yang Sudah Ada

Gunakan with(obj) { ... } ketika Anda tidak mengendalikan lokasi pemanggilan (tanpa rantai titik), tetapi ingin mengelompokkan operasi menggunakan this.

class Builder {
    val parts = mutableListOf<String>()
    fun add(s: String) { parts.add(s) }
    fun build(): String = parts.joinToString("-")
}
fun main() {
    val b = Builder()
    val result = with(b) {
        add("hello")
        add("kotlin")
        build()
    }
    println(result) // hello-kotlin
}

Memilih berdasarkan Tujuan

Tanyakan: (1) Apakah saya memerlukan objek penerima kembali atau hasil turunan? (2) Apakah saya lebih menyukai this atau it? Jawaban tersebut menentukan fungsinya.

class Box { var w = 0; var h = 0; fun area() = w * h }
fun main() {
    // Configure and return Box -> apply
    val box = Box().apply { w = 3; h = 4 }
    // Compute area from box -> let or run
    val area = box.let { it.area() }
    // Side effect, keep box -> also
    val sameBox = box.also { println("area=${it.area()}") }
    println("$box / $area / $sameBox")
}

Perbandingan: apply vs also

Keduanya mengembalikan objek penerima. apply menggunakan this (baik untuk menetapkan bidang). also menggunakan it (baik untuk merujuk objek penerima secara eksplisit, biasanya dalam efek samping).

class Item { var name = "" }
fun main() {
    val a = Item().apply { name = "apply" } // implicit this
    val b = Item().also { it.name = "also" } // explicit it
    println("${a.name} / ${b.name}")
}

Perbandingan: let vs run

Keduanya mengembalikan hasil lambda. let menggunakan it (baik untuk transformasi sederhana dan keamanan null). run menggunakan this (baik ketika Anda memanggil banyak anggota).

class Calculator(val a: Int, val b: Int) {
    fun sum() = a + b
    fun product() = a * b
}
fun main() {
    val calc = Calculator(3, 4)
    val s = calc.let { it.sum() }                  // simple
    val combo = calc.run { "sum=${sum()} product=${product()}" } // multi-member
    println("$s / $combo")
}

Alur Praktis

Rantai nyata sering menggunakan beberapa fungsi cakupan secara bersamaan.

class Request(var url: String = "", var headers: Map<String, String> = emptyMap())
fun main() {
    val response = Request()
        .apply {
            url = "https://api.example.com"
            headers = mapOf("Accept" to "json")
        }
        .also { println("request: ${it.url}") }
        .let { req -> "GET ${req.url}" }
    println(response)
}

Lembar Contekan

Referensi singkat untuk memilih alat yang tepat.

// apply: this, returns receiver — configure object
// also: it, returns receiver — side effects in chain
// let: it, returns lambda result — transform / null-safety
// run: this, returns lambda result — multi-member compute
// with: this, returns lambda result — group operations on existing obj
fun main() { println("Scope functions: pick by receiver style + return value") }

Pemeriksaan Singkat

Fungsi cakupan mana yang menggunakan this sebagai objek penerima DAN mengembalikan objek penerima itu sendiri?

Ringkasan

Pilih fungsi cakupan berdasarkan tujuan: apply (konfigurasi + mengembalikan diri sendiri), also (efek samping + mengembalikan diri sendiri), let (transformasi dengan it), run (transformasi dengan this), with (mengelompokkan operasi pada objek yang sudah ada). Dua sumbu—gaya objek penerima dan nilai yang dikembalikan—menentukan pilihan yang tepat.

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 “Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan” gratis?

Ya — teks lengkap “Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan” 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 “Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan”?

Pilih fungsi cakupan yang tepat berdasarkan receiver, tipe nilai kembalian, dan tujuan penggunaannya. 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 4 dari 4.

Berapa lama pelajaran “Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan” 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. apply dan with: Mengonfigurasi dan Mengembalikan
  2. let dan run: Transformasi dan Cakupan
  3. also: Efek Samping Tanpa Mengubah Receiver
  4. Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan
← Kembali ke Kotlin Academy