Перечисление используется для определения именованных значений констант. Перечислимый тип объявляется с использованием ключевого слова enum .
Синтаксис перечисления
Простейшая форма определения перечисления следующая —
enum enum_name { enumeration list }
Куда,
-
Enum_name указывает имя типа перечисления.
-
Список перечисления представляет собой список идентификаторов через запятую.
Enum_name указывает имя типа перечисления.
Список перечисления представляет собой список идентификаторов через запятую.
Каждый из символов в списке перечисления обозначает целочисленное значение, на один больше, чем символ, который предшествует ему. По умолчанию значение первого символа перечисления равно 0. Например, —
enum Days { sun, mon, tue, wed, thu, fri, sat };
пример
В следующем примере демонстрируется использование переменной enum —
import std.stdio; enum Days { sun, mon, tue, wed, thu, fri, sat }; int main(string[] args) { Days day; day = Days.mon; writefln("Current Day: %d", day); writefln("Friday : %d", Days.fri); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Current Day: 1 Friday : 5
В приведенной выше программе мы видим, как можно использовать перечисление. Изначально мы создаем переменную с именем day для нашего пользовательского перечисления Days. Затем мы устанавливаем его в mon, используя оператор точки. Нам нужно использовать метод writefln, чтобы напечатать значение mon, которое было сохранено. Вам также необходимо указать тип. Он имеет тип integer, поэтому мы используем% d для печати.
Именованные свойства Enums
Приведенный выше пример использует имя Days для перечисления и называется named enums. Эти именованные перечисления имеют следующие свойства —
-
Init — инициализирует первое значение в перечислении.
-
min — возвращает наименьшее значение перечисления.
-
max — возвращает наибольшее значение перечисления.
-
sizeof — возвращает размер хранилища для перечисления.
Init — инициализирует первое значение в перечислении.
min — возвращает наименьшее значение перечисления.
max — возвращает наибольшее значение перечисления.
sizeof — возвращает размер хранилища для перечисления.
Давайте изменим предыдущий пример, чтобы использовать свойства.
import std.stdio; // Initialized sun with value 1 enum Days { sun = 1, mon, tue, wed, thu, fri, sat }; int main(string[] args) { writefln("Min : %d", Days.min); writefln("Max : %d", Days.max); writefln("Size of: %d", Days.sizeof); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Min : 1 Max : 7 Size of: 4
Аноним Enum
Перечисление без имени называется анонимным перечислением. Пример анонимного перечисления приведен ниже.
import std.stdio; // Initialized sun with value 1 enum { sun , mon, tue, wed, thu, fri, sat }; int main(string[] args) { writefln("Sunday : %d", sun); writefln("Monday : %d", mon); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Sunday : 0 Monday : 1
Анонимные перечисления работают почти так же, как именованные перечисления, но у них нет свойств max, min и sizeof.
Перечисление с синтаксисом базового типа
Синтаксис перечисления с базовым типом показан ниже.
enum :baseType { enumeration list }
Некоторые из базовых типов включают long, int и string. Пример использования long показан ниже.
import std.stdio; enum : string { A = "hello", B = "world", } int main(string[] args) { writefln("A : %s", A); writefln("B : %s", B); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
A : hello B : world
Больше возможностей
Перечисление в D обеспечивает такие функции, как инициализация нескольких значений в перечислении с несколькими типами. Пример показан ниже.
import std.stdio; enum { A = 1.2f, // A is 1.2f of type float B, // B is 2.2f of type float int C = 3, // C is 3 of type int D // D is 4 of type int } int main(string[] args) { writefln("A : %f", A); writefln("B : %f", B); writefln("C : %d", C); writefln("D : %d", D); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —