Enum dengan when
Penanganan menyeluruh
Enum dengan when adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Enum Cocok Digunakan dengan when
Ekspresi when adalah cara alami untuk membuat percabangan berdasarkan enum. Setiap konstanta mendapatkan cabangnya sendiri.
enum class Light { RED, YELLOW, GREEN }
fun action(l: Light) = when (l) {
Light.RED -> "Stop"
Light.YELLOW -> "Slow"
Light.GREEN -> "Go"
}
fun main() {
println(action(Light.GREEN))
}Kelengkapan Cabang
Ketika when digunakan sebagai ekspresi pada enum dan mencakup setiap konstanta, cabang else tidak diperlukan. Kompilator memverifikasi kelengkapannya.
enum class Coin { HEADS, TAILS }
fun flip(c: Coin) = when (c) {
Coin.HEADS -> "Win"
Coin.TAILS -> "Lose"
}
fun main() {
println(flip(Coin.HEADS))
}Kompilator Menjaga Kode Anda
Jika Anda menambahkan konstanta baru tetapi lupa menambahkan cabang, kompilator melaporkan kesalahan. Hal ini membuat enum bersama when sangat aman untuk dikembangkan.
enum class Size { S, M, L }
fun label(s: Size) = when (s) {
Size.S -> "Small"
Size.M -> "Medium"
Size.L -> "Large"
}
fun main() {
println(label(Size.M))
}Mengimpor Konstanta
Anda dapat mengimpor anggota enum untuk menghilangkan awalan tipe di dalam when, sehingga cabang menjadi lebih singkat.
enum class Dir { UP, DOWN }
import Dir.UP
import Dir.DOWN
fun move(d: Dir) = when (d) {
UP -> "y + 1"
DOWN -> "y - 1"
}
fun main() {
println(move(Dir.UP))
}Mengelompokkan Cabang
Beberapa konstanta dapat menggunakan satu cabang dengan mencantumkannya dan memisahkannya menggunakan koma.
enum class Day { MON, TUE, WED, SAT, SUN }
fun kind(d: Day) = when (d) {
Day.SAT, Day.SUN -> "Weekend"
else -> "Weekday"
}
fun main() {
println(kind(Day.SAT))
}Mengembalikan Tipe yang Berbeda
Setiap cabang dapat menghasilkan nilai; seluruh when menjadi nilai tersebut.
enum class Tier { FREE, PRO }
fun limit(t: Tier): Int = when (t) {
Tier.FREE -> 10
Tier.PRO -> 1000
}
fun main() {
println(limit(Tier.PRO))
}when Tanpa Argumen
Anda juga dapat membuat percabangan berdasarkan kondisi, tetapi untuk enum, bentuk dengan subjek adalah yang paling bersih dan memungkinkan pemeriksaan kelengkapan.
enum class Mood { HAPPY, SAD }
fun emoji(m: Mood) = when (m) {
Mood.HAPPY -> ":)"
Mood.SAD -> ":("
}
fun main() {
println(emoji(Mood.HAPPY))
}Efek Samping dalam Cabang
Cabang dapat menjalankan pernyataan, bukan hanya mengembalikan nilai.
enum class Cmd { START, STOP }
fun run(c: Cmd) {
when (c) {
Cmd.START -> println("Starting...")
Cmd.STOP -> println("Stopping...")
}
}
fun main() {
run(Cmd.START)
}Hindari else Jika Memungkinkan
Menggunakan else meniadakan pemeriksaan kelengkapan: konstanta baru akan diam-diam masuk ke else. Untuk enum, sebaiknya gunakan cabang eksplisit.
enum class State { ON, OFF }
fun text(s: State) = when (s) {
State.ON -> "on"
State.OFF -> "off"
}
fun main() {
println(text(State.OFF))
}Perutean yang Realistis
Memetakan peran pengguna ke izin adalah penggunaan yang tepat untuk when yang lengkap.
enum class Role { ADMIN, USER, GUEST }
fun canDelete(r: Role) = when (r) {
Role.ADMIN -> true
Role.USER -> false
Role.GUEST -> false
}
fun main() {
println(canDelete(Role.ADMIN))
}Menggabungkan dengan Properti
Anda dapat membuat percabangan berdasarkan enum dan juga menggunakan propertinya di dalam cabang.
enum class Coin(val cents: Int) { PENNY(1), DIME(10) }
fun describe(c: Coin) = when (c) {
Coin.PENNY -> "Worth ${c.cents}"
Coin.DIME -> "Worth ${c.cents}"
}
fun main() {
println(describe(Coin.DIME))
}Pemeriksaan Singkat
Uji pemahaman Anda tentang enum dengan when.
Ringkasan
Anda telah mempelajari cara menggabungkan enum dengan when:
whenpada enum dapat lengkap tanpaelse.- Kompilator memastikan semua konstanta tercakup.
- Kelompokkan konstanta dengan koma; setiap cabang menghasilkan nilai.
- Hindari
elseagar keamanan dari pemeriksaan kelengkapan tetap terjaga.
enum class Light { RED, GREEN }
fun go(l: Light) = when (l) {
Light.RED -> false
Light.GREEN -> true
}
fun main() {
println(go(Light.GREEN))
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Enum dengan when” gratis?
Ya — teks lengkap “Enum dengan when” 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 “Enum dengan when”?
Penanganan menyeluruh 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 3 dari 4.
Berapa lama pelajaran “Enum dengan when” 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.