0Pricing
Kotlin Academy · Pelajaran

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:

  • when pada enum dapat lengkap tanpa else.
  • Kompilator memastikan semua konstanta tercakup.
  • Kelompokkan konstanta dengan koma; setiap cabang menghasilkan nilai.
  • Hindari else agar 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.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan Enum
  2. Properti dan Metode Enum
  3. Enum dengan when
  4. Nilai dan Ordinal Enum
← Kembali ke Kotlin Academy