typestar

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

  1. sealed class HideEvent fija el conjunto de subtipos.
  2. Los patrones de objeto desestructuran campos: Arrival(:final species).
  3. Sin brazo default — cubre cada caso o no compila.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Records y patrones; paso 21 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →