0Pricing
Kotlin Academy · Lezione

Proprietà e metodi degli enum

Aggiunga un comportamento

Proprietà e metodi degli enum è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Le enum possono contenere dati

Le costanti enum possono contenere proprietà. Dichiari un costruttore nella classe enum e passi i valori quando elenca ciascuna costante.

enum class Coin(val cents: Int) {
    PENNY(1), NICKEL(5), DIME(10)
}

fun main() {
    println(Coin.DIME.cents)
}

Parametri del costruttore

I valori tra parentesi dopo ciascuna costante sono argomenti del costruttore della enum. Diventano proprietà di sola lettura di quella costante.

enum class Planet(val gravity: Double) {
    EARTH(9.8), MOON(1.6)
}

fun main() {
    println(Planet.MOON.gravity)
}

Più proprietà

Una enum può dichiarare diverse proprietà contemporaneamente.

enum class Fruit(val color: String, val calories: Int) {
    APPLE("red", 95),
    BANANA("yellow", 105)
}

fun main() {
    val f = Fruit.BANANA
    println("${f.color} ${f.calories}")
}

Aggiunta di metodi

È possibile dichiarare funzioni normali nel corpo della enum. Tutte le costanti le condividono.

enum class Temp(val celsius: Int) {
    COLD(5), WARM(25);

    fun toFahrenheit(): Int = celsius * 9 / 5 + 32
}

fun main() {
    println(Temp.WARM.toFahrenheit())
}

La regola del punto e virgola

Quando una enum contiene membri oltre alle costanti, come metodi o proprietà, è necessario inserire un punto e virgola dopo l'ultima costante.

enum class Op {
    ADD, SUB;

    fun describe() = "Operation: $name"
}

fun main() {
    println(Op.ADD.describe())
}

Metodi astratti per costante

Le enum possono dichiarare metodi astratti che ogni costante sovrascrive, assegnando a ciascuna costante un comportamento specifico.

enum class Math {
    PLUS { override fun apply(a: Int, b: Int) = a + b },
    TIMES { override fun apply(a: Int, b: Int) = a * b };

    abstract fun apply(a: Int, b: Int): Int
}

fun main() {
    println(Math.TIMES.apply(3, 4))
}

Proprietà calcolate

I getter delle proprietà possono calcolare valori in base ai dati della costante.

enum class Account(val balance: Int) {
    SAVINGS(1000), CHECKING(50);

    val isRich: Boolean get() = balance > 500
}

fun main() {
    println(Account.SAVINGS.isRich)
}

Combinazione di dati e comportamento

Le proprietà insieme ai metodi consentono a una enum di rappresentare un dominio chiuso e articolato.

enum class Shape(val sides: Int) {
    TRIANGLE(3), SQUARE(4);

    fun describe() = "$name has $sides sides"
}

fun main() {
    println(Shape.SQUARE.describe())
}

Utilizzo delle proprietà nella logica

Le proprietà delle costanti sono utili nei calcoli e nelle condizioni.

enum class Tier(val discount: Int) {
    BRONZE(5), GOLD(20)
}

fun price(base: Int, tier: Tier) = base - base * tier.discount / 100

fun main() {
    println(price(100, Tier.GOLD))
}

Valori predefiniti delle proprietà

I costruttori delle enum supportano i valori predefiniti dei parametri, come qualsiasi altro costruttore.

enum class Role(val canEdit: Boolean = false) {
    VIEWER, EDITOR(true)
}

fun main() {
    println(Role.VIEWER.canEdit)
    println(Role.EDITOR.canEdit)
}

Un modello completo

In questo caso una enum rappresenta gli stati HTTP con dati e comportamento.

enum class Http(val code: Int) {
    OK(200), NOT_FOUND(404);

    fun isError() = code >= 400
}

fun main() {
    println(Http.NOT_FOUND.isError())
}

Verifica rapida

Verifichi la propria comprensione delle proprietà e dei metodi delle enum.

Riepilogo

Ha imparato che le enum possono contenere comportamento:

  • Aggiunga un costruttore per fornire proprietà alle costanti.
  • Dichiari metodi condivisi, utilizzando un punto e virgola dopo le costanti.
  • I metodi astratti consentono a ogni costante di definire il proprio comportamento.
  • Le proprietà calcolate e con valori predefiniti funzionano come di consueto.
enum class Coin(val cents: Int) {
    PENNY(1), DIME(10);
    fun double() = cents * 2
}

fun main() {
    println(Coin.DIME.double())
}

Domande Frequenti

La lezione «Proprietà e metodi degli enum» è gratuita?

Sì — il testo completo di «Proprietà e metodi degli enum» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «Proprietà e metodi degli enum»?

Aggiunga un comportamento Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Proprietà e metodi degli enum»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Definizione degli enum
  2. Proprietà e metodi degli enum
  3. Enum con when
  4. Valori e ordinali degli enum
← Torna a Kotlin Academy