Как реализовать ветвление с помощью оператора switch в языке Dart?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ветвление с помощью оператора switch в Dart выполняется следующим образом:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Selected color is red.');
break; // Завершает выполнение switch-блока
case 'blue':
print('Selected color is blue.');
break;
case 'green':
print('Selected color is green.');
break;
default: // Выполняется, если ни один case не совпал
print('Unknown color.');
}
}
switch сравнивает значение переменной (в данном случае color) с константами, указанными после case. При совпадении выполняется код, связанный с этим case. Ключевое слово break необходимо для выхода из switch-блока после выполнения соответствующего case. Если его опустить, исполнение перейдет к следующему case (это называется "fallthrough"), что обычно нежелательно. default используется для обработки случаев, когда ни один из case не совпадает.
Важно помнить, что в Dart в switch можно использовать только следующие типы выражений в case:
int- Строки (
String) - Константы времени компиляции (
const) или финальные (final) переменные примитивных типов - Перечисления (
enum)
Также можно использовать совпадение по типу с помощью case (Type value):
void process(dynamic value) {
switch (value) {
case String s:
print('Value is a string: $s');
break;
case int i when i > 0: // Использование guard clause с when
print('Value is a positive integer: $i');
break;
case List _: // Сопоставление с типом List без привязки к переменной
print('Value is a list');
break;
default:
print('Value is of another type');
}
}
void main() {
process('hello');
process(10);
process([1, 2, 3]);
process(3.14);
}
В Dart 3.0 появились новые возможности паттерн-матчинга, которые расширяют switch выражения:
var number = 1;
var text = switch (number) {
1 => 'one',
2 => 'two',
_ => 'other' // Эквивалентно default
};
print(text); // Выведет: one
Здесь switch используется как выражение, возвращающее значение. Оператор _ выступает как подстановочный символ, соответствующий любому значению.