Hogyan valósítható meg az elágazás a switch operátor segítségével a Dart nyelvben?
sobes.tech MI
Válasz az MI-től
A switch operátorral történő elágazás Dartban a következőképpen történik:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('A kiválasztott szín a piros.');
break; // Kilép a switch blokkból
case 'blue':
print('A kiválasztott szín a kék.');
break;
case 'green':
print('A kiválasztott szín a zöld.');
break;
default: // Akkor fut, ha egyik case sem egyezik
print('Ismeretlen szín.');
}
}
A switch összehasonlítja a változó (itt color) értékét a case után megadott konstansokkal. Egyezés esetén a hozzá tartozó kód fut le. A break kulcsszó szükséges ahhoz, hogy kilépjen a switch-ből a megfelelő case végrehajtása után. Ha elhagyjuk, a végrehajtás a következő case-be folytatódik (ez a "fallthrough"), ami általában nem kívánatos. A default a nem egyező esetek kezelésére szolgál.
Fontos megjegyezni, hogy Dartban a switch-ban csak a következő típusú kifejezéseket lehet használni:
int- String (
String) - Fordítási időben állandók (
const) vagy végleges (final) primitív típusú változók - Enumerációk (
enum)
Emellett használható a típus szerinti egyezés is case (Type value)-val:
void process(dynamic value) {
switch (value) {
case String s:
print('A érték egy string: $s');
break;
case int i when i > 0: // Guard használata a when-nel
print('Pozitív egész szám: $i');
break;
case List _: // List típusú egyezés változó kötés nélkül
print('A érték egy lista');
break;
default:
print('Más típusú érték');
}
}
void main() {
process('helló');
process(10);
process([1, 2, 3]);
process(3.14);
}
A Dart 3.0-ban új pattern matching képességek kerültek bevezetésre, amelyek kibővítik a switch kifejezéseket:
var number = 1;
var text = switch (number) {
1 => 'egy',
2 => 'kettő',
_ => 'más' // egyenértékű a default-tal
};
print(text); // Kiírja: egy
Itt a switch kifejezésként van használva, amely értéket ad vissza. Az _ operátor helyettesítő karakterként működik, amely bármely értékkel egyezik.