Hoe implementeer je vertakkingen met behulp van de switch-operator in de Dart-taal?
sobes.tech AI
Antwoord van AI
Vertakking met de switch-operator in Dart wordt als volgt uitgevoerd:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Geselecteerde kleur is rood.');
break; // Verlaat het switch-blok
case 'blue':
print('Geselecteerde kleur is blauw.');
break;
case 'green':
print('Geselecteerde kleur is groen.');
break;
default: // Wordt uitgevoerd als geen enkele case overeenkomt
print('Onbekende kleur.');
}
}
switch vergelijkt de waarde van de variabele (hier color) met de constanten die na case worden aangegeven. Bij een match wordt de code die bij die case hoort uitgevoerd. Het sleutelwoord break is nodig om uit het switch-blok te gaan na het uitvoeren van de juiste case. Als je het weglaat, gaat de uitvoering door naar de volgende case (dit wordt "fallthrough" genoemd), wat meestal niet wenselijk is. default wordt gebruikt om gevallen te behandelen waarin geen case overeenkomt.
Het is belangrijk om te onthouden dat in Dart in een switch alleen de volgende typen uitdrukkingen in case kunnen worden gebruikt:
int- Strings (
String) - Constanten op compile-tijd (
const) of finale (final) variabelen van primitieve types - Enumeraties (
enum)
Ook kan matching op type worden gebruikt met case (Type value):
void process(dynamic value) {
switch (value) {
case String s:
print('Waarde is een string: $s');
break;
case int i when i > 0: // Gebruik van guard met when
print('Positief geheel getal: $i');
break;
case List _: // Matching op type List zonder variabele binding
print('Waarde is een lijst');
break;
default:
print('Waarde is van een ander type');
}
}
void main() {
process('hallo');
process(10);
process([1, 2, 3]);
process(3.14);
}
In Dart 3.0 zijn nieuwe pattern matching-mogelijkheden geïntroduceerd die switch-uitdrukkingen uitbreiden:
var number = 1;
var text = switch (number) {
1 => 'een',
2 => 'twee',
_ => 'ander' // gelijk aan default
};
print(text); // Toont: een
Hier wordt switch gebruikt als een uitdrukking die een waarde teruggeeft. De _-operator fungeert als wildcard die overeenkomt met elke waarde.