Как да реализираме разклоняване с помощта на оператора switch в езика Dart?
sobes.tech AI
Отговор от AI
Разклоняване с помощта на оператора switch в Dart се извършва по следния начин:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Избраният цвят е червен.');
break; // Изход от блока switch
case 'blue':
print('Избраният цвят е син.');
break;
case 'green':
print('Избраният цвят е зелен.');
break;
default: // Изпълнява се, ако никой case не съвпадне
print('Непознат цвят.');
}
}
switch сравнява стойността на променливата (тук color) с константите, посочени след case. При съвпадение се изпълнява кодът, свързан с този case. Ключовата дума break е необходима за излизане от switch блока след изпълнение на съответния case. Ако я пропуснете, изпълнението ще продължи към следващия case (това се нарича "fallthrough"), което обикновено не е желано. default се използва за обработка на случаите, когато никой case не съвпадне.
Важно е да се помни, че в Dart в switch могат да се използват само следните типове изрази:
int- Стрийтове (
String) - Константи по време на компилация (
const) или финални (final) променливи от примитивни типове - Енумерации (
enum)
Също така може да се използва съвпадение по тип чрез case (Type value):
void process(dynamic value) {
switch (value) {
case String s:
print('Стойността е стринг: $s');
break;
case int i when i > 0: // Използване на guard с when
print('Положително цяло число: $i');
break;
case List _: // Съвпадение с тип List без връзка с променлива
print('Стойността е списък');
break;
default:
print('Стойността е от друг тип');
}
}
void main() {
process('здравей');
process(10);
process([1, 2, 3]);
process(3.14);
}
В Dart 3.0 бяха въведени нови възможности за pattern matching, които разширяват switch изразите:
var number = 1;
var text = switch (number) {
1 => 'едно',
2 => 'две',
_ => 'друго' // еквивалентно на default
};
print(text); // Ще изведе: едно
Тук switch се използва като израз, който връща стойност. Операторът _ служи като заместител, който съответства на всяка стойност.