Pemeriksaan Cerdas
Lakukan pemeriksaan lalu ubah tipe secara otomatis
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 valmemberikan pemeran cerdas yang paling dapat diandalkan
Selanjutnya, Anda akan mempelajari operator is dan as secara langsung.
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
- when sebagai Ekspresi
- Pemeriksaan Cerdas
- Operator is dan as
- when Menyeluruh