Programmazione D - Enumerazioni
Un'enumerazione viene utilizzata per definire valori costanti denominati. Un tipo enumerato viene dichiarato utilizzando ilenum parola chiave.
La sintassi enum
La forma più semplice di una definizione enum è la seguente:
enum enum_name {
enumeration list
}
Dove,
L'enum_name specifica il nome del tipo di enumerazione.
L' elenco di enumerazione è un elenco di identificatori separati da virgole.
Ciascuno dei simboli nell'elenco di enumerazione rappresenta un valore intero, uno maggiore del simbolo che lo precede. Per impostazione predefinita, il valore del primo simbolo di enumerazione è 0. Ad esempio:
enum Days { sun, mon, tue, wed, thu, fri, sat };
Esempio
L'esempio seguente mostra l'uso della variabile 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;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Current Day: 1
Friday : 5
Nel programma sopra, possiamo vedere come può essere utilizzata un'enumerazione. Inizialmente, creiamo una variabile denominata day della nostra enumerazione definita dall'utente Days. Quindi lo impostiamo su mon usando l'operatore punto. Dobbiamo usare il metodo writefln per stampare il valore di mon che è stato memorizzato. È inoltre necessario specificare il tipo. È di tipo intero, quindi usiamo% d per la stampa.
Proprietà di enumerazioni denominate
L'esempio precedente utilizza un nome Days per l'enumerazione ed è denominato named enums. Queste enumerazioni denominate hanno le seguenti proprietà:
Init - Inizializza il primo valore nell'enumerazione.
min - Restituisce il valore più piccolo di enumerazione.
max - Restituisce il valore più grande di enumerazione.
sizeof - Restituisce la dimensione della memoria per l'enumerazione.
Modifichiamo l'esempio precedente per utilizzare le proprietà.
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;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Min : 1
Max : 7
Size of: 4
Enum anonimo
L'enumerazione senza nome viene chiamata enumerazione anonima. Un esempio peranonymous enum è dato di seguito.
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;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Sunday : 0
Monday : 1
Le enumerazioni anonime funzionano più o meno allo stesso modo delle enumerazioni denominate ma non hanno le proprietà max, min e sizeof.
Enum con sintassi del tipo di base
La sintassi per l'enumerazione con il tipo di base è mostrata di seguito.
enum :baseType {
enumeration list
}
Alcuni dei tipi di base includono long, int e string. Di seguito è mostrato un esempio di utilizzo di long.
import std.stdio;
enum : string {
A = "hello",
B = "world",
}
int main(string[] args) {
writefln("A : %s", A);
writefln("B : %s", B);
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
A : hello
B : world
Altre funzionalità
L'enumerazione in D fornisce funzionalità come l'inizializzazione di più valori in un'enumerazione con più tipi. Di seguito è mostrato un esempio.
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;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
A : 1.200000
B : 2.200000
C : 3
D : 4