Kotlin Academy · Oppitunti

Enumeraatioiden määrittäminen

Nimetyt vakiojoukot

Oppitunti 1/413 vaihetta

Enumeraatioiden määrittäminen on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on enumeraatio?

Enum-luokka määrittelee kiinteän joukon nimettyjä vakioita. Käytä sitä, kun arvo voi olla vain yksi pienestä, ennalta tunnetusta vaihtoehtojoukosta.

  • Jokainen vakio on enum-tyypin ilmentymä.
  • Kääntäjä takaa, etteivät muut arvot ole mahdollisia.
enum class Direction {
    NORTH, SOUTH, EAST, WEST
}

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

Miksi ei vain käytettäisi merkkijonoja?

Merkkijonot sallivat kirjoitusvirheet ja virheelliset arvot. Enum tekee virheellisistä tiloista mahdottomia: kääntäjä hylkää kaikki ilmoitettuun joukkoon kuulumattomat arvot.

enum class Status { ACTIVE, INACTIVE }

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

Vakioiden määrittely

Vakiot luetellaan aaltosulkeiden välissä pilkuilla erotettuina. Yleissopimuksen mukaan ne kirjoitetaan muodossa UPPER_SNAKE_CASE.

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

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

Jokainen vakio on olio

Jokainen enum-vakio on enum-tyypin singleton-ilmentymä. Siihen viitataan aina enum-nimen kautta, esimerkiksi Color.RED.

enum class Color { RED, GREEN, BLUE }

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

Enum-arvojen vertaileminen

Enum-vakioita voi verrata operaattorilla ==. Koska jokainen vakio on singleton, yhtäsuuruus ja viiteidentiteetti vastaavat toisiaan.

enum class Light { RED, YELLOW, GREEN }

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

name-ominaisuuden lukeminen

Jokainen vakio tarjoaa sisäänrakennetun name-ominaisuuden, joka sisältää täsmälleen sen määrittelyssä käytetyn merkkijonon.

enum class Planet { MERCURY, VENUS, EARTH }

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

valueOf merkkijonosta

Automaattisesti luotu valueOf()-funktio muuntaa täsmäävän merkkijonon enum-vakioksi. Jos merkkijono ei täsmää, funktio heittää poikkeuksen.

enum class Day { MON, TUE, WED }

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

Enumit parametreina

Enumit sopivat erinomaisesti funktion parametreiksi: kutsuja voi välittää vain yhden sallituista vakioista.

enum class Level { LOW, HIGH }

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

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

Enumit parantavat luettavuutta

Koodi, jossa lukee Direction.NORTH, dokumentoi itse itsensä. Taikalukuihin, kuten 0 tai 1, verrattuna tarkoitus on ilmeinen.

enum class Gear { PARK, DRIVE, REVERSE }

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

Realistinen esimerkki

Pienen korttimaiden joukon mallintaminen sopii täydellisesti enumille.

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

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

Yhden vakion enumit

Myös yksi vakio on sallittu. Sitä käytetään usein mallintamaan arvoa, jonka tiedetään olevan aina sama (niin sanottu köyhän miehen singleton).

enum class AppMode { PRODUCTION }

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

Pikatarkistus

Testaa, miten hyvin ymmärrät enumien määrittelyn.

Kertaus

Opit määrittelemään enumit:

  • enum class ilmoittaa kiinteän joukon nimettyjä vakioita.
  • Jokainen vakio on singleton-ilmentymä, johon pääsee käsiksi enum-nimen kautta.
  • name ja valueOf() yhdistävät vakiot ja merkkijonot.
  • Enumit estävät virheelliset arvot käännösaikana.
enum class Direction { NORTH, SOUTH, EAST, WEST }

fun main() {
    println(Direction.valueOf("EAST").name)
}
Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Enumeraatioiden määrittäminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Enumeraatioiden määrittäminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Enumeraatioiden määrittäminen”?

Nimetyt vakiojoukot Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Enumeraatioiden määrittäminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Enumeraatioiden määrittäminen
  2. Enumeraatioiden ominaisuudet ja metodit
  3. Enumeraatiot ja when
  4. Enumeraatioarvot ja järjestysluvut
← Takaisin: Kotlin Academy