Kotlin Academy · Lekcja

Definiowanie enumów

Nazwane zbiory stałych

Lekcja 1 z 413 kroki

Definiowanie enumów to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Czym jest enum?

Klasa enum definiuje stały zbiór nazwanych stałych. Należy jej używać, gdy wartość może należeć tylko do niewielkiego, znanego zbioru możliwości.

  • Każda stała jest instancją typu enum.
  • Kompilator gwarantuje, że nie są możliwe żadne inne wartości.
enum class Direction {
    NORTH, SOUTH, EAST, WEST
}

fun main() {
    val d = Direction.NORTH
    println(d)
}

Dlaczego nie użyć po prostu napisów?

Napisy dopuszczają literówki i nieprawidłowe wartości. Enum sprawia, że nieprawidłowe stany są niemożliwe: kompilator odrzuca wszystko, co nie należy do zadeklarowanego zbioru.

enum class Status { ACTIVE, INACTIVE }

fun main() {
    val s: Status = Status.ACTIVE
    println("Current: $s")
}

Deklarowanie stałych

Stałe wymienia się w nawiasach klamrowych, oddzielając je przecinkami. Zgodnie z konwencją zapisuje się je jako UPPER_SNAKE_CASE.

enum class Size {
    SMALL, MEDIUM, LARGE, EXTRA_LARGE
}

fun main() {
    println(Size.EXTRA_LARGE)
}

Każda stała jest obiektem

Każda stała enum jest pojedynczą instancją typu enum. Zawsze odwołuje się do niej za pośrednictwem nazwy enum, na przykład Color.RED.

enum class Color { RED, GREEN, BLUE }

fun main() {
    val c = Color.GREEN
    println(c == Color.GREEN)
}

Porównywanie wartości enum

Stałe enum można porównywać za pomocą ==. Ponieważ każda z nich jest pojedynczą instancją, równość i tożsamość referencji są zgodne.

enum class Light { RED, YELLOW, GREEN }

fun main() {
    val signal = Light.RED
    if (signal == Light.RED) println("Stop")
}

Odczytywanie właściwości name

Każda stała udostępnia wbudowaną właściwość name: dokładny napis użyty w jej deklaracji.

enum class Planet { MERCURY, VENUS, EARTH }

fun main() {
    val p = Planet.EARTH
    println(p.name)
}

valueOf z napisu

Wygenerowana funkcja valueOf() przekształca pasujący napis w stałą enum. Napis, który nie pasuje, powoduje zgłoszenie wyjątku.

enum class Day { MON, TUE, WED }

fun main() {
    val d = Day.valueOf("TUE")
    println(d)
}

Używanie enum jako parametrów

Enumy świetnie sprawdzają się jako parametry funkcji: wywołujący może przekazać tylko jedną z prawidłowych stałych.

enum class Level { LOW, HIGH }

fun setVolume(level: Level) {
    println("Volume set to $level")
}

fun main() {
    setVolume(Level.HIGH)
}

Enumy poprawiają czytelność

Kod zawierający Direction.NORTH sam wyjaśnia swoje znaczenie. W porównaniu z liczbami magicznymi, takimi jak 0 lub 1, intencja jest oczywista.

enum class Gear { PARK, DRIVE, REVERSE }

fun main() {
    val current = Gear.DRIVE
    println("Gear is $current")
}

Realistyczny przykład

Modelowanie niewielkiego zbioru kolorów kart jest idealnym zastosowaniem enum.

enum class Suit { HEARTS, DIAMONDS, CLUBS, SPADES }

fun main() {
    for (suit in Suit.values()) {
        println(suit)
    }
}

Enumy z jedną stałą

Dozwolona jest nawet jedna stała; często służy to do modelowania wartości, która z założenia występuje tylko raz — jest to uproszczony singleton.

enum class AppMode { PRODUCTION }

fun main() {
    println(AppMode.PRODUCTION)
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat definiowania enumów.

Podsumowanie

Nauczyli się Państwo definiować enumy:

  • enum class deklaruje stały zbiór nazwanych stałych.
  • Każda stała jest pojedynczą instancją dostępną za pośrednictwem nazwy enum.
  • name i valueOf() umożliwiają konwersję między stałymi a napisami.
  • Enumy zapobiegają nieprawidłowym wartościom już podczas kompilacji.
enum class Direction { NORTH, SOUTH, EAST, WEST }

fun main() {
    println(Direction.valueOf("EAST").name)
}
Bezpłatny start

Ucz się Kotlin dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
51
Lekcje
203

Często zadawane pytania

Czy lekcja „Definiowanie enumów” jest bezpłatna?

Tak — pełny tekst „Definiowanie enumów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Definiowanie enumów”?

Nazwane zbiory stałych Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Definiowanie enumów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Definiowanie enumów
  2. Właściwości i metody enumów
  3. Enumy z when
  4. Wartości i numery porządkowe enumów
← Powrót do Kotlin Academy