Clases selladas en Dart
Una jerarquía cerrada que el compilador revisa por exhaustividad.
// sealed closes the hierarchy: switches over it must be exhaustive.
sealed class HideEvent {}
class Arrival extends HideEvent {
final String species;
Arrival(this.species);
}
class Departure extends HideEvent {
final int minutes;
Departure(this.minutes);
}
String describe(HideEvent e) => switch (e) {
Arrival(:final species) => '$species just landed',
Departure(:final minutes) => 'gone after $minutes min',
};
void main() {
print(describe(Arrival('spoonbill')));
print(describe(Departure(45)));
}
Cómo funciona
sealed class HideEventfija el conjunto de subtipos.- Los patrones de objeto desestructuran campos:
Arrival(:final species). - Sin brazo default — cubre cada caso o no compila.
Palabras clave y builtins usados aquí
Stringclassextendsfinalintswitchthisvoid
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 501
- Tokens
- 114
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 105 segundos.
Paso 3 de 3 en Records y patrones; paso 21 de 27 en Fundamentos del lenguaje.