1.4Kпросмотров
45.7%от подписчиков
26 февраля 2026 г.
📷 ФотоScore: 1.5K
Hola, Amigos! Сегодня обсудим pattern matching. Он сокращает boilerplate, улучшает код и повышает безопасность работы со state. 1. Деструктуризация с помощью паттернов Пример с Records: var user = ('Naman', 29);
var (name, age) = user; print(name);
print(age); 2. Деструктуризация объектов Есть класс: class User { final String name; final int age; User(this.name, this.age);
} Можно извлечь свойства так: var User(:name, :age) = user; Это эквивалентно: var name = user.name;
var age = user.age; 3. Pattern Matching в switch Традиционный подход: if (state is Success) { final data = state.data;
} Подход с pattern matching switch (state) { case Success(data: var data): render(data); case Loading(): showLoader(); case Error(message: var msg): showError(msg);
} 4. Сопоставление коллекций Паттерны умеют анализировать списки и map: switch(list) { case []: print("Empty"); case [first, second]: print(first);
} switch(json) { case {'status': 'ok', 'data': var d}: process(d); case {'status': 'error', 'message': var m}: showError(m);
} 5. Guard-условия switch(user) { case User(age: var age) when age > 18: print("Adult"); case _: print("Minor");
} А вы используете pattern matching?