Перечисления

Последнее обновление: 05.03.2023

Перечисления в Dart или enum представляют тип данны, который хранит фиксированный набор константных значений. Для определения перечисления применяется ключевое слово enum. Например, определим простейшее перечисление:

enum Operation{
 
    add, 
	subtract, 
	multiply
}
void main (){
     
    print(Operation.multiply);			// Operation.multiply
	print(Operation.multiply.index);	// 2
}

В данном случае определено перечисление Operation. Внутри блока перечисления перечисляются константы перечисления. В данном случае перемечисление Operation имеет три константы: add, subtract и multiply.

Для обращения к константам перечисления указывается название перечисления и через точку константа:

print(Operation.multiply);

Если мы попробуем вывести на консоль значение константы, то мы увидим фактически ее название - "Operation.multiply". Однако с каждой константой также сопоставляется числовой индекс, который мы можем получить через поле index (Operation.multiply.index). Так, в данном случае константа Operation.multiply имеет индекс 2, потому что она определена третьей по порядку в перечислении. Первая константа (в данном случае - add) имеет индекс 0, вторая - индекс 1 и так далее.

Каждое перечисление фактически определяет новый тип данных. Затем в программе мы можем определить переменную этого типа и использовать ее:

enum Operation{
 
    add, 
	subtract, 
	multiply
}
void main (){
     
	 // создаем переменную перечисления Operation
	Operation op;
	// присваиваем значение
	op = Operation.add;				
	print(op);			// Operation.add
	print(op.index);	// 0
}

Значением такой переменной является одна из констант этого перечисления.

Обычно переменная перечисления выступает в качестве хранилища состояния, в зависимости от которого производятся некоторые действия. Так, рассмотрим применение перечисления на более реальном примере:

enum Operation{
  
    add, 
    subtract, 
    multiply
}
void main (){
      
     // Тип операции задаем с помощью константы Operation.add
    runOperation(10, 5, Operation.add);
     
     // Тип операции задаем с помощью константы Operation.subtract
    runOperation(10, 5, Operation.subtract);

    // Тип операции задаем с помощью константы Operation.multiply
    runOperation(10, 5, Operation.multiply);
}
 
void runOperation(int x, int y, Operation op)
{
    int result = 0;
  
    switch (op){
        case Operation.add:
            result = x + y;
        case Operation.subtract:
            result = x - y;
        case Operation.multiply:
            result = x * y;
    }
  
    print("Результат операции равен $result");
}

Здесь функция runOperation в качестве параметров принимает два числа и тип операции. В функции main три раза вызывается runOperation, получая два числа и тип операции.

Консольный вывод программы:

Результат операции равен 15
Результат операции равен 5
Результат операции равен 50
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850