Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpEsInr 74 of 113 menu
◀ ▶

Введение в enum и sealed в Dart

Ограниченный набор вариантов часто встречается в программе: статус заказа, день недели, результат запроса, состояние экрана. Если хранить такие значения простой строкой или числом, легко передать лишнее значение и пропустить его при разборе. Dart дает два родственных способа описать набор заранее: enum и sealed class.

Ключевое слово enum перечисляет фиксированные константы одного типа. У каждой константы одно имя в коде, все они известны компилятору, их удобно сравнивать и перебирать. В начальном курсе мы уже объявляли простое перечисление без полей; в этом разделе добавим параметры конструктора, методы и разбор через switch.

Ключевое слово sealed class тоже ограничивает круг возможных типов, но каждый вариант может нести свои данные: успех с текстом, ошибка с кодом, загрузка без полей. Подтипы объявляют в том же файле, поэтому компилятор знает полный список вариантов так же, как для enum. Это удобно для ответов API, шагов мастера, дерева выражений, где у разных веток разная форма данных.

Оба механизма сочетаются с switch и проверкой типа так же, как иерархии с обычным наследованием: если перечислены все варианты, ветку default часто можно не писать. Enum удобен, когда нужны только метки или общие поля у всех констант; sealed - когда подтипы наследуют общий запечатанный тип и несут разные данные через final class, по аналогии с абстрактным родителем и конкретными наследниками. Дальше разберем поля и методы у enum, список values, затем sealed class и разбор вариантов в switch.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить