РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
119 of 723 menu

Расширенный enum

Расширенный enum (enhanced enum) в Dart - это перечисление, которое, в отличие от обычного, может содержать поля, конструкторы, методы, геттеры и реализовывать интерфейсы. Каждый элемент такого перечисления является экземпляром класса перечисления, поэтому может хранить собственные данные и иметь поведение. В конструктор элемента мы передаем значения для его полей, а через методы и геттеры получаем доступ к этим значениям.

Синтаксис

enum Name { value1(args), value2(args); final Type field; const Name(this.field); Type method() { // body } }

Пример

Давайте создадим расширенный enum с полем и конструктором, а затем выведем значения его элементов:

enum Color { red('red'), green('green'), blue('blue'); final String title; const Color(this.title); } void main() { print(Color.red.title); print(Color.green.title); print(Color.blue.title); }

Результат выполнения кода:

"red" "green" "blue"

Пример

Давайте добавим в расширенный enum метод, который возвращает описание элемента:

enum Color { red('red'), green('green'), blue('blue'); final String title; const Color(this.title); String describe() { return 'Color is $title'; } } void main() { print(Color.red.describe()); print(Color.blue.describe()); }

Результат выполнения кода:

"Color is red" "Color is blue"

Пример

Давайте переопределим метод toString внутри расширенного enum, чтобы при выводе элемента получать его понятное представление:

enum Color { red('red'), green('green'), blue('blue'); final String title; const Color(this.title); @override String toString() { return title; } } void main() { print(Color.red); print(Color.green); }

Результат выполнения кода:

"red" "green"

Пример

Давайте переберём все элементы расширенного enum через свойство values и выведем их поля:

enum Color { red('red'), green('green'), blue('blue'); final String title; const Color(this.title); } void main() { for (Color color in Color.values) { print(color.title); } }

Результат выполнения кода:

"red" "green" "blue"

Смотрите также

  • класс enum,
    который представляет обычные перечисления
  • ключевое слово const-constructor,
    которое задаёт константный конструктор
  • ключевое слово static,
    которое объявляет статические члены класса
  • метод toString,
    который возвращает строковое представление объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить