typestar

Jerarquías selladas en Kotlin

Un conjunto cerrado de casos que el compilador revisa por exhaustividad.

// A sealed hierarchy is closed: when over it needs no else branch.
sealed interface TrailEvent
data class Sighting(val species: String) : TrailEvent
data class Washout(val atKm: Double) : TrailEvent
object Sunset : TrailEvent

fun describe(event: TrailEvent): String = when (event) {
    is Sighting -> "Saw a ${event.species}"
    is Washout -> "Turn back at km ${event.atKm}"
    Sunset -> "Headlamps on"
}

fun main() {
    println(describe(Sighting("marmot")))
    println(describe(Washout(11.5)))
    println(describe(Sunset))
}

Cómo funciona

  1. sealed interface TrailEvent fija las implementaciones en compilación.
  2. Los casos son data classes o singletons — object Sunset no carga campos.
  3. El when no necesita else: cubre cada caso o el archivo no compila.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
510
Tokens
112
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 103 segundos.

Escribe este fragmento

Paso 2 de 3 en Clases y objetos; paso 14 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →