De case-verklaring, onderdeel van de switch-verklaring, stelt je in staat om een waarde te vergelijken met meerdere mogelijke waarden en de bijbehorende code uit te voeren.
Basisgebruik van switch-case
Een switch-verklaring vergelijkt een enkele waarde met meerdere mogelijke waarden (cases) en voert de bijbehorende code uit voor de eerste overeenkomst:
void main() {
int nummer = 3;
switch (nummer) {
case 1:
print('Eén');
break;
case 2:
print('Twee');
break;
case 3:
print('Drie');
break;
default:
print('Onbekend nummer');
}
}In dit voorbeeld wordt de waarde 3 vergeleken met verschillende cases, en de bijbehorende code voor case 3 wordt uitgevoerd.
default-case
De default-case wordt uitgevoerd als geen enkele andere case overeenkomt:
void main() {
int nummer = 3;
switch (nummer) {
case 1:
print('Eén');
break;
case 2:
print('Twee');
break;
case 3:
print('Drie');
break;
default:
print('Onbekend nummer');
}
}In dit voorbeeld wordt de default-case uitgevoerd omdat de waarde 4 niet overeenkomt met een van de andere cases.
Fall-through gedrag
In Dart is er geen impliciet “fall-through” gedrag zoals in sommige andere talen. Elke case moet expliciet worden beëindigd met een break, return, of een andere manier om de switch-verklaring te verlaten.
void main() {
int nummer = 2;
switch (nummer) {
case 1:
print('Eén');
break;
case 2:
print('Twee');
continue andereCase;
andereCase:
case 3:
print('Twee of Drie');
break;
default:
print('Onbekend nummer');
}
}In dit voorbeeld gebruiken we het continue-statement om naar een andere case door te gaan.
Geavanceerde switch-case met logische patronen
Dart ondersteunt ook meer geavanceerde switch-case-verklaringen met logische patronen en destructurering:
void main() {
var punt = [1, 2];
switch (punt) {
case [1, 2]:
print('Punt is op (1, 2)');
break;
case [3, 4]:
print('Punt is op (3, 4)');
break;
default:
print('Punt is op een onbekende locatie');
}
}In dit voorbeeld gebruiken we een lijstpatroon om te controleren op specifieke punten.
De switch-case-verklaring in Dart is een krachtig hulpmiddel voor het uitvoeren van verschillende codepaden op basis van de waarde van een enkele variabele. Door het gebruik van case, default, en geavanceerde patronen kun je complexe vergelijkingslogica efficiënt implementeren.