Что такое Enum в программировании
простыми и легкими словами с примерами в Dart/Flutter
перечисление, часто называемое для краткости «enum», — это способ определить набор именованных значений, которые представляют набор связанных констант. Перечисления делают ваш код более читабельным и удобным для сопровождения, давая осмысленные имена этим константам.
Вот простое объяснение с использованием базового примера на Python:
Допустим, вы создаете программу, которая работает с разными днями недели. Вместо того, чтобы использовать числа для представления каждого дня, вы можете использовать перечисление, чтобы дать каждому дню осмысленное имя:
enum Color { red, green, blue, yellow, } void main() { Color myFavoriteColor = Color.blue; if (myFavoriteColor == Color.red) { print("Your favorite color is red!"); } else if (myFavoriteColor == Color.green) { print("Your favorite color is green!"); } else if (myFavoriteColor == Color.blue) { print("Your favorite color is blue!"); } else if (myFavoriteColor == Color.yellow) { print("Your favorite color is yellow!"); } else { print("Invalid color choice"); } }
В этом примере мы сначала определяем перечисление Color с четырьмя возможными значениями: красный, зеленый, синий и желтый. Затем мы создаем переменную myFavoriteColor и присваиваем ей значение Color.blue.
Операторы if и else if используются для сравнения значения myFavoriteColor с каждым из значений перечисления. Если условие выполнено, выводится соответствующее сообщение. Если ни одно из условий не соответствует, блок else печатает Invalid color selection.
другой пример
const today = DayOfWeek.WEDNESDAY enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, } void main() { DayOfWeek today = DayOfWeek.WEDNESDAY; if (today == DayOfWeek.WEDNESDAY) { print("It's Wednesday!"); }
Пример 2. Давайте рассмотрим еще один пример, чтобы проиллюстрировать, как перечисления работают в Dart. В этом примере мы создадим перечисление для представления разных видов фруктов: яблоко, банан, апельсин и виноград.
enum Fruit { APPLE, BANANA, ORANGE, GRAPE, } class FruitInfo { final Fruit fruit; final String color; final String taste; FruitInfo(this.fruit, this.color, this.taste); } void main() { List<FruitInfo> fruits = [ FruitInfo(Fruit.APPLE, "Red/Green", "Sweet and Crisp"), FruitInfo(Fruit.BANANA, "Yellow", "Soft and Sweet"), FruitInfo(Fruit.ORANGE, "Orange", "Juicy and Tangy"), FruitInfo(Fruit.GRAPE, "Purple/Green", "Sweet and Small"), ]; Fruit selectedFruit = Fruit.APPLE; for (var fruitInfo in fruits) { if (fruitInfo.fruit == selectedFruit) { print("Selected fruit: ${fruitInfo.fruit}"); print("Color: ${fruitInfo.color}"); print("Taste: ${fruitInfo.taste}"); break; } } }
В этом примере Дарта:
- Мы определили перечисление с именем
Fruit
для представления различных типов фруктов. - Мы создали класс
FruitInfo
, который содержит информацию о названии, цвете и вкусе фрукта. - В функции
main
мы создали список объектовFruitInfo
, каждый из которых содержит сведения о конкретном фрукте. - Мы инициализировали переменную
selectedFruit
для представления фруктов, о которых хотим получить информацию. - Мы перебираем список объектов
FruitInfo
, сравниваем их значениеfruit
сselectedFruit
и распечатываем информацию о выбранном фрукте.
В этом примере показано, как перечисления можно использовать для категоризации и управления различными типами данных структурированным и понятным способом, что делает код более организованным и понятным.