Kotlin Academy · Pelajaran

Memilih Fungsi Skop yang Tepat: Panduan Keputusan

Pilih fungsi skop yang betul berdasarkan penerima, jenis pemulangan dan tujuan.

Pelajaran 4 daripada 414 langkah

Memilih Fungsi Skop yang Tepat: Panduan Keputusan ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kotlin Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.

Lima Fungsi, Dua Paksi

Fungsi skop Kotlin berbeza mengikut dua paksi: gaya penerima (this atau it) dan nilai yang dikembalikan (penerima atau hasil lambda). Pilih berdasarkan tujuan.

Matriks Keputusan

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

apply: Konfigurasi dan Pengembalian

Gunakan apply untuk konfigurasi objek dalam rantaian gaya pembina.

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: Kesan Sampingan

Gunakan also untuk mencatat log, mengesahkan atau mencetuskan kesan sampingan sambil meneruskan penerima.

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

let: Penukaran dan Keselamatan Null bagi Skop

Gunakan let untuk penukaran yang selamat terhadap null atau untuk mengehadkan skop pemboleh ubah.

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

run: Akses Berbilang Ahli dengan Hasil

Gunakan run apabila mengira hasil daripada banyak ahli penerima — ini menjimatkan 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: Mengumpulkan Operasi pada Objek Sedia Ada

Gunakan with(obj) { ... } apabila anda tidak mengawal tapak panggilan (tiada rantaian titik) tetapi mahu mengumpulkan 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

Tanya: (1) Adakah saya memerlukan penerima kembali atau hasil terbitan? (2) Adakah saya lebih suka this atau it? Jawapan tersebut menentukan fungsi yang sesuai.

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 berbanding also

Kedua-duanya mengembalikan penerima. apply menggunakan this (baik untuk menetapkan medan). also menggunakan it (baik untuk merujuk penerima secara jelas, biasanya dalam kesan sampingan).

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 berbanding run

Kedua-duanya mengembalikan hasil lambda. let menggunakan it (baik untuk penukaran mudah dan keselamatan null). run menggunakan this (baik apabila anda memanggil banyak ahli).

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")
}

Aliran Pemprosesan Praktikal

Rantaian dunia sebenar sering menggunakan beberapa fungsi skop bersama-sama.

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)
}

Panduan Ringkas

Rujukan pantas untuk memilih alat yang betul.

// 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") }

Semakan Pantas

Fungsi skop manakah yang menggunakan this sebagai penerima DAN mengembalikan penerima itu sendiri?

Ulang Kaji

Pilih fungsi skop berdasarkan tujuan: apply (konfigurasi + mengembalikan diri sendiri), also (kesan sampingan + mengembalikan diri sendiri), let (menukar dengan it), run (menukar dengan this), with (mengumpulkan operasi pada objek sedia ada). Dua paksi — gaya penerima dan nilai yang dikembalikan — menentukan pilihan yang tepat.

Percuma untuk bermula

Pelajari Kotlin dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Memilih Fungsi Skop yang Tepat: Panduan Keputusan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “Memilih Fungsi Skop yang Tepat: Panduan Keputusan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Memilih Fungsi Skop yang Tepat: Panduan Keputusan”?

Pilih fungsi skop yang betul berdasarkan penerima, jenis pemulangan dan tujuan. Anda berlatih Kotlin Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kotlin Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kotlin Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Memilih Fungsi Skop yang Tepat: Panduan Keputusan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. apply dan with: Konfigurasi dan Pemulangan
  2. let dan run: Transformasi dan Skop
  3. also: Kesan Sampingan Tanpa Mengubah Penerima
  4. Memilih Fungsi Skop yang Tepat: Panduan Keputusan
← Kembali ke Kotlin Academy