Kotlin Academy · Pelajaran

Pemeriksaan Cerdas

Lakukan pemeriksaan lalu ubah tipe secara otomatis

Pelajaran 2 dari 413 langkah

Pemeriksaan Cerdas 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.

Apa Itu Pemeran Cerdas

Setelah Anda memeriksa tipe suatu nilai, Kotlin mengingat fakta tersebut. Di dalam blok yang diperiksa, Kotlin secara otomatis memperlakukan nilai itu sebagai tipe yang telah dipersempit.

Fitur ini disebut pemeran cerdas dan menghilangkan kebutuhan akan pemeranan manual.

Pemeran Cerdas Setelah is

Setelah pemeriksaan is berhasil, Anda dapat menggunakan nilai tersebut sebagai tipe itu tanpa menulis pemeranan.

Kompiler memasukkannya untuk Anda.

fun describe(x: Any) {
    if (x is String) {
        println(x.length) // x is smart-cast to String
    }
}

fun main() {
    describe("hello")
}

Pemeran Cerdas Setelah Pemeriksaan Null

Pemeran cerdas juga bekerja untuk kenullan. Setelah memastikan bahwa suatu nilai bukan null, nilai tersebut diperlakukan sebagai nilai yang tidak null.

fun length(text: String?): Int {
    if (text != null) {
        return text.length // smart-cast to non-null String
    }
    return 0
}

fun main() {
    println(length("abc"))
    println(length(null))
}

Pemeran Cerdas dalam when

Pemeriksaan tipe di dalam when juga mengaktifkan pemeran cerdas di setiap cabang.

Ini adalah cara idiomatis untuk menangani beberapa tipe yang mungkin.

fun area(shape: Any): Double = when (shape) {
    is Int -> shape.toDouble()
    is String -> shape.length.toDouble()
    else -> 0.0
}

fun main() {
    println(area(5))
    println(area("hello"))
}

Pemeran Cerdas dengan Pengembalian Awal

Jika Anda langsung mengembalikan nilai saat suatu nilai adalah null, kompiler mengetahui bahwa nilai tersebut bukan null setelahnya.

Sisa fungsi dapat menggunakan nilai tersebut dengan aman.

fun process(text: String?) {
    if (text == null) return
    println(text.uppercase()) // smart-cast here
}

fun main() {
    process("data")
    process(null)
}

Pemeran Cerdas dengan Pengembalian Elvis

Menggabungkan Elvis dengan return juga memicu pemeran cerdas untuk kode selanjutnya.

fun process(text: String?) {
    val safe = text ?: return
    println(safe.length) // safe is non-null
}

fun main() {
    process("hi")
    process(null)
}

Kondisi Gabungan

Pemeran cerdas mengikuti logika kondisi gabungan yang menggunakan &&.

Setelah pemeriksaan tipe di sebelah kiri, sisi kanan sudah melihat tipe yang telah dipersempit.

fun check(x: Any) {
    if (x is String && x.length > 3) {
        println("long string")
    } else {
        println("other")
    }
}

fun main() {
    check("hello")
    check(2)
}

Saat Pemeran Cerdas Gagal

Pemeran cerdas memerlukan jaminan bahwa nilai tidak akan berubah antara pemeriksaan dan penggunaannya.

var yang dapat berubah secara bersamaan mungkin tidak dapat menggunakan pemeran cerdas. Sebaiknya gunakan val agar pemeran cerdas dapat diandalkan.

fun main() {
    val text: String? = "stable"
    if (text != null) {
        println(text.length) // val smart-casts cleanly
    }
}

val Lokal Paling Aman

Menyalin nilai ke dalam val lokal membuat pemeran cerdas lebih dapat diandalkan.

Ini merupakan pola umum saat bekerja dengan properti yang dapat bernilai null.

class Box(val content: String?)

fun main() {
    val box = Box("item")
    val c = box.content
    if (c != null) {
        println(c.uppercase())
    }
}

Pemeran Cerdas vs Pemeranan Eksplisit

Pemeran cerdas menggantikan sebagian besar pemeranan as eksplisit. Pemeran cerdas lebih aman karena hanya berlaku saat tipe tersebut telah terbukti.

Selanjutnya, Anda akan mempelajari is dan as eksplisit.

fun main() {
    val x: Any = "text"
    if (x is String) {
        // no need for (x as String)
        println(x.reversed())
    }
}

Menyatukan Semuanya

Pemeran cerdas memungkinkan kompiler mempersempit tipe secara otomatis:

  • Setelah pemeriksaan is → diperankan ke tipe tersebut
  • Setelah pemeriksaan null → diperankan ke tipe yang tidak null
  • Bekerja dalam if, when, dan setelah pengembalian awal
  • Paling dapat diandalkan dengan val
fun render(x: Any): String {
    if (x is Int) return "number " + x
    if (x is String) return "text " + x.uppercase()
    return "unknown"
}

fun main() {
    println(render(7))
    println(render("go"))
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang pemeran cerdas.

Rangkuman

Anda telah mempelajari pemeran cerdas:

  • Pemeriksaan tipe dan null mempersempit tipe secara otomatis
  • Pemeran cerdas bekerja dalam if, when, dan setelah pengembalian awal
  • val memberikan pemeran cerdas yang paling dapat diandalkan

Selanjutnya, Anda akan mempelajari operator is dan as secara langsung.

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 “Pemeriksaan Cerdas” gratis?

Ya — teks lengkap “Pemeriksaan Cerdas” 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 “Pemeriksaan Cerdas”?

Lakukan pemeriksaan lalu ubah tipe secara otomatis 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 “Pemeriksaan Cerdas” 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. when sebagai Ekspresi
  2. Pemeriksaan Cerdas
  3. Operator is dan as
  4. when Menyeluruh
← Kembali ke Kotlin Academy