Cum se implementează ramificarea folosind operatorul switch în limbajul Dart?
sobes.tech AI
Răspuns de la AI
Divizarea cu ajutorul operatorului switch în Dart se face după cum urmează:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Culoarea selectată este roșu.');
break; // Ieșire din blocul switch
case 'blue':
print('Culoarea selectată este albastru.');
break;
case 'green':
print('Culoarea selectată este verde.');
break;
default: // Se execută dacă niciun caz nu se potrivește
print('Culoare necunoscută.');
}
}
switch compară valoarea variabilei (în acest caz color) cu constantele indicate după case. La potrivire, se execută codul asociat acelui case. Cuvântul cheie break este necesar pentru a ieși din blocul switch după executarea cazului corespunzător. Dacă se omite, execuția va continua în următorul case (se numește "fallthrough"), ceea ce de obicei nu este dorit. default este folosit pentru a trata cazurile în care niciun case nu se potrivește.
Este important să rețineți că în Dart, într-un switch, se pot folosi doar următoarele tipuri de expresii în case:
int- Șiruri (
String) - Constante în timpul compilării (
const) sau variabile finale (final) de tipuri primitive - Enumerări (
enum)
De asemenea, se poate folosi potrivirea după tip cu case (Type value):
void process(dynamic value) {
switch (value) {
case String s:
print('Valoare de tip string: $s');
break;
case int i when i > 0: // Utilizarea guard cu when
print('Număr întreg pozitiv: $i');
break;
case List _: // Potrivire cu tipul List fără legare la variabilă
print('Valoare de tip listă');
break;
default:
print('Alt tip de valoare');
}
}
void main() {
process('salut');
process(10);
process([1, 2, 3]);
process(3.14);
}
În Dart 3.0, au fost introduse noi capabilități de pattern matching care extind expresiile switch:
var number = 1;
var text = switch (number) {
1 => 'unu',
2 => 'doi',
_ => 'altul' // echivalent cu default
};
print(text); // Va afișa: unu
Aici, switch este folosit ca o expresie care returnează o valoare. Operatorul _ acționează ca un wildcard, corespunzând oricărei valori.