Sobes.tech
Junior

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.