Паттерны
Паттерны (patterns) в Dart - это мощный механизм, который позволяет
сопоставлять значения с определенной структурой и извлекать из них
данные. Паттерны используются в операторах switch, if-case,
циклах for и for-in, а также в объявлениях переменных.
Паттерн может быть простым (например, литерал или переменная) или
составным (например, список, запись или объект). В первом параметре
паттерн принимает значение для сопоставления, а во втором - действие,
которое выполняется при успешном совпадении.
Синтаксис
// Простой паттерн
var (a, b) = (1, 2);
// Паттерн в switch
switch (value) {
case 1:
// ...
case [1, 2]:
// ...
}
// Паттерн в if-case
if (value case [1, 2]) {
// ...
}
Пример
Давайте деструктурируем запись с помощью паттерна:
void main()
{
var (a, b) = (1, 2);
print(a);
print(b);
}
Результат выполнения кода:
1
2
Пример
Давайте сопоставим список с паттерном в операторе switch:
void main()
{
var list = [1, 2, 3];
switch (list) {
case [1, 2, 3]:
print('matched');
default:
print('not matched');
}
}
Результат выполнения кода:
"matched"
Пример
Давайте извлечем значения из записи с помощью паттерна в цикле for-in:
void main()
{
var points = [(1, 2), (3, 4), (5, 6)];
for (var (x, y) in points) {
print('x: $x, y: $y');
}
}
Результат выполнения кода:
"x: 1, y: 2"
"x: 3, y: 4"
"x: 5, y: 6"