Programmation D - Enums

Une énumération est utilisée pour définir des valeurs constantes nommées. Un type énuméré est déclaré à l'aide duenum mot-clé.

La syntaxe enum

La forme la plus simple d'une définition d'énumération est la suivante:

enum enum_name {  
   enumeration list 
}

Où,

  • Le enum_name spécifie le nom du type d'énumération.

  • La liste d'énumération est une liste d'identificateurs séparés par des virgules.

Chacun des symboles de la liste d'énumération représente une valeur entière, un plus grand que le symbole qui le précède. Par défaut, la valeur du premier symbole d'énumération est 0. Par exemple -

enum Days { sun, mon, tue, wed, thu, fri, sat };

Exemple

L'exemple suivant montre l'utilisation de la variable 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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Current Day: 1 
Friday : 5

Dans le programme ci-dessus, nous pouvons voir comment une énumération peut être utilisée. Au départ, nous créons une variable nommée jour de notre dénombrement défini par l'utilisateur Days. Ensuite, nous le définissons sur mon à l'aide de l'opérateur point. Nous devons utiliser la méthode writefln pour afficher la valeur de mon stockée. Vous devez également spécifier le type. Il est de type entier, nous utilisons donc% d pour l'impression.

Propriétés des énumérations nommées

L'exemple ci-dessus utilise un nom Days pour l'énumération et est appelé enums nommés. Ces énumérations nommées ont les propriétés suivantes -

  • Init - Il initialise la première valeur de l'énumération.

  • min - Il renvoie la plus petite valeur d'énumération.

  • max - Il renvoie la plus grande valeur d'énumération.

  • sizeof - Il renvoie la taille du stockage pour l'énumération.

Modifions l'exemple précédent pour utiliser les propriétés.

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; 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Min : 1
Max : 7
Size of: 4

Enum anonyme

L'énumération sans nom est appelée énumération anonyme. Un exemple pouranonymous enum est donnée ci-dessous.

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; 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Sunday : 0
Monday : 1

Les énumérations anonymes fonctionnent à peu près de la même manière que les énumérations nommées, mais elles n'ont pas les propriétés max, min et sizeof.

Énumération avec la syntaxe de type de base

La syntaxe de l'énumération avec le type de base est indiquée ci-dessous.

enum :baseType {  
   enumeration list 
}

Certains des types de base incluent long, int et string. Un exemple utilisant long est présenté ci-dessous.

import std.stdio;
  
enum : string { 
   A = "hello", 
   B = "world", 
} 
  
int main(string[] args) { 
   writefln("A : %s", A); 
   writefln("B : %s", B); 
   
   return 0; 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

A : hello
B : world

Plus de fonctionnalités

L'énumération dans D fournit des fonctionnalités telles que l'initialisation de plusieurs valeurs dans une énumération avec plusieurs types. Un exemple est présenté ci-dessous.

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; 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

A : 1.200000
B : 2.200000
C : 3
D : 4