let, also dan run dengan Penerima Boleh-Nol
Gunakan fungsi skop untuk melaksanakan kod hanya apabila sesuatu nilai bukan nol.
let, also dan run dengan Penerima Boleh-Nol ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 3 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.
Fungsi Skop dan Nilai Boleh Null
Fungsi skop let, also dan run sangat sesuai digandingkan dengan panggilan selamat ?. untuk melaksanakan blok hanya apabila penerimanya bukan null.
let dengan Panggilan Selamat
obj?.let { ... } menjalankan blok hanya jika obj bukan null; di dalam blok, it merujuk kepada nilai bukan null tersebut.
fun main() {
val name: String? = "Kotlin"
name?.let {
println("Length: ${it.length}")
println("Upper: ${it.uppercase()}")
}
}let Melangkau Blok apabila Null
Jika penerima bernilai null, seluruh blok let akan dilangkau.
fun main() {
val name: String? = null
val result = name?.let {
println("never printed")
it.length
}
println(result) // null
}let Memulangkan Nilai
let memulangkan ungkapan terakhir dalam bloknya — ia boleh dirangkaikan dengan Elvis untuk menyediakan nilai lalai.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
println(cleaned) // HELLO
}also untuk Kesan Sampingan
also menjalankan blok untuk kesan sampingannya dan memulangkan penerima asal — sangat sesuai untuk pengelogan dalam rangkaian.
fun main() {
val name: String? = "Alice"
val len = name?.also { println("Processing: $it") }?.length
println("len = $len")
}also Mengekalkan Nilai
Tidak seperti let, also memulangkan penerima tanpa perubahan. Gunakannya apabila anda mahu melihat nilai tanpa mengubahnya.
fun main() {
val items: List<Int>? = listOf(1, 2, 3)
items?.also { println("Got list of size ${it.size}") }
?.forEach { println(it) }
}run dengan Panggilan Selamat
obj?.run { ... } menjalankan blok dengan this terikat kepada penerima. Gunakannya apabila anda mahu mengakses ahli tanpa awalan it..
fun main() {
val name: String? = "Kotlin"
val info = name?.run {
"len=$length upper=${uppercase()}"
}
println(info)
}let berbanding run
let menggunakan it (argumen lambda); run menggunakan this (penerima). Pilih yang menghasilkan bacaan lebih jelas.
class User(val name: String, val age: Int)
fun main() {
val user: User? = User("Ada", 35)
user?.let { "${it.name} age ${it.age}" }.also(::println)
user?.run { "$name age $age" }.also(::println)
}Merangkaikan Beberapa Skop
Rangkaikan fungsi skop merentasi saluran data untuk melakukan transformasi langkah demi langkah dan pengelogan.
fun main() {
val raw: String? = " hello "
val result = raw
?.also { println("raw: '$it'") }
?.let { it.trim() }
?.also { println("trimmed: '$it'") }
?.uppercase()
println(result) // HELLO
}let dengan takeIf
Gabungkan takeIf (penapisan) dengan let untuk pelaksanaan berasaskan predikat.
fun main() {
val name: String? = "Kotlin"
name?.takeIf { it.length > 3 }
?.let { println("Long name: $it") }
}Corak Anti: if Bersarang
Sebelum fungsi skop digunakan:
fun main() {
val name: String? = "Alice"
// OLD WAY:
if (name != null) {
val upper = name.uppercase()
println(upper)
}
// NEW WAY:
name?.let { println(it.uppercase()) }
}Semakan Pantas
Fungsi skop manakah yang memulangkan penerima tanpa perubahan dan digunakan terutamanya untuk kesan sampingan?
Ringkasan
Gabungkan ?. dengan let (blok memulangkan nilai dan menggunakan it), run (blok memulangkan nilai dan menggunakan this) atau also (memulangkan penerima dan digunakan untuk kesan sampingan). Kesemuanya melangkau pelaksanaan jika penerima bernilai null.
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 “let, also dan run dengan Penerima Boleh-Nol” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “let, also dan run dengan Penerima Boleh-Nol”, 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 “let, also dan run dengan Penerima Boleh-Nol”?
Gunakan fungsi skop untuk melaksanakan kod hanya apabila sesuatu nilai bukan nol. 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 3 daripada 4.
Berapa lamakah pelajaran “let, also dan run dengan Penerima Boleh-Nol” 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
- Jenis Boleh-Nol dan Pengubah ?
- Panggilan Selamat ?. dan Elvis ?: dalam Kod Sebenar
- let, also dan run dengan Penerima Boleh-Nol
- Operator !!: Bila dan Mengapa Perlu Mengelakkannya