Enums (enumerations) in Dart bieden een manier om een verzameling verwante waarden te definiëren. Ze zijn ideaal voor situaties waarin je een variabele wilt beperken tot een van een vooraf gedefinieerde reeks waarden. In Dart worden enums gedefinieerd met het sleutelwoord enum.
Basisgebruik van Enums
Een enum wordt gedefinieerd door het opsommen van de waarden tussen accolades. Hier is een eenvoudig voorbeeld:
enum Kleur {
rood,
groen,
blauw
}
void main() {
Kleur favorieteKleur = Kleur.groen;
print('Mijn favoriete kleur is $favorieteKleur');
}In dit voorbeeld definiëren we een enum genaamd Kleur met drie waarden: rood, groen, en blauw. We gebruiken vervolgens de enum om een variabele te declareren en te initialiseren.
Enum Eigenschappen en Methoden
Enums in Dart hebben enkele ingebouwde eigenschappen en methoden:
index: De positie van de enum waarde in de definitie.values: Een lijst van alle waarden in de enum.
Voorbeeld:
enum Kleur {
rood,
groen,
blauw
}
void main() {
for (var kleur in Kleur.values) {
print('Kleur: $kleur, index: ${kleur.index}');
}
}In dit voorbeeld gebruiken we de values eigenschap om door alle waarden in de Kleur enum te itereren en hun naam en index af te drukken.
Gebruik van Enums in Switch-verklaringen
Enums kunnen handig worden gebruikt in switch-verklaringen om specifieke acties uit te voeren op basis van de waarde van een enum variabele:
enum Dag {
maandag,
dinsdag,
woensdag,
donderdag,
vrijdag,
zaterdag,
zondag
}
void main() {
Dag vandaag = Dag.vrijdag;
switch (vandaag) {
case Dag.maandag:
print('Vandaag is maandag');
break;
case Dag.dinsdag:
print('Vandaag is dinsdag');
break;
case Dag.woensdag:
print('Vandaag is woensdag');
break;
case Dag.donderdag:
print('Vandaag is donderdag');
break;
case Dag.vrijdag:
print('Vandaag is vrijdag');
break;
case Dag.zaterdag:
print('Vandaag is zaterdag');
break;
case Dag.zondag:
print('Vandaag is zondag');
break;
}
}In dit voorbeeld gebruiken we een switch-verklaring om een bericht af te drukken op basis van de huidige dag.
Uitbreiden van Enums met Velden en Methoden
In Dart 2.15 en later kun je enums uitbreiden met velden en methoden, waardoor ze krachtiger en flexibeler worden.
Voorbeeld:
enum Voertuig {
auto('Auto', 4),
fiets('Fiets', 2),
vliegtuig('Vliegtuig', 3);
final String naam;
final int wielen;
const Voertuig(this.naam, this.wielen);
void beschrijving() {
print('$naam heeft $wielen wielen.');
}
}
void main() {
Voertuig.auto.beschrijving();
Voertuig.fiets.beschrijving();
Voertuig.vliegtuig.beschrijving();
}In dit voorbeeld breiden we de Voertuig enum uit met velden naam en wielen, en een methode beschrijving. We gebruiken deze methode om beschrijvingen van de voertuigen af te drukken.
Enums in Dart bieden een gestructureerde manier om een verzameling verwante waarden te definiëren en te gebruiken. Ze zijn bijzonder nuttig in situaties waarin een variabele beperkt moet zijn tot een van een reeks vooraf gedefinieerde waarden. Door gebruik te maken van de ingebouwde eigenschappen en methoden van enums, evenals de mogelijkheid om enums uit te breiden met extra velden en methoden, kun je de leesbaarheid en robuustheid van je code aanzienlijk verbeteren.