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
sealed interface TrailEventfija las implementaciones en compilación.- Los casos son data classes o singletons —
object Sunsetno carga campos. - El
whenno necesitaelse: cubre cada caso o el archivo no compila.
Palabras clave y builtins usados aquí
DoubleStringclassdatafuninterfaceisobjectsealedvalwhen
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.
Paso 2 de 3 en Clases y objetos; paso 14 de 27 en Fundamentos del lenguaje.