Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan
Pilih fungsi cakupan yang tepat berdasarkan receiver, tipe nilai kembalian, dan tujuan penggunaannya.
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.
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
- apply dan with: Mengonfigurasi dan Mengembalikan
- let dan run: Transformasi dan Cakupan
- also: Efek Samping Tanpa Mengubah Receiver
- Memilih Fungsi Cakupan yang Tepat: Panduan Keputusan