Programação D - Enums
Uma enumeração é usada para definir valores constantes nomeados. Um tipo enumerado é declarado usando oenum palavra-chave.
A sintaxe enum
A forma mais simples de definição de enum é a seguinte -
enum enum_name {
enumeration list
}
Onde,
O enum_name especifica o nome do tipo de enumeração.
A lista de enumeração é uma lista separada por vírgulas de identificadores.
Cada um dos símbolos na lista de enumeração representa um valor inteiro, um maior do que o símbolo que o precede. Por padrão, o valor do primeiro símbolo de enumeração é 0. Por exemplo -
enum Days { sun, mon, tue, wed, thu, fri, sat };
Exemplo
O exemplo a seguir demonstra o uso da variável 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 o código acima é compilado e executado, ele produz o seguinte resultado -
Current Day: 1
Friday : 5
No programa acima, podemos ver como uma enumeração pode ser usada. Inicialmente, criamos uma variável chamada dia de nossa enumeração definida pelo usuário Dias. Em seguida, definimos como mon usando o operador ponto. Precisamos usar o método writefln para imprimir o valor de mon que foi armazenado. Você também precisa especificar o tipo. É do tipo inteiro, portanto, usamos% d para impressão.
Propriedades de Enums Nomeados
O exemplo acima usa um nome Dias para a enumeração e é chamado de enums nomeados. Esses enums nomeados têm as seguintes propriedades -
Init - Inicializa o primeiro valor na enumeração.
min - Retorna o menor valor de enumeração.
max - Retorna o maior valor de enumeração.
sizeof - Retorna o tamanho do armazenamento para enumeração.
Vamos modificar o exemplo anterior para fazer uso das propriedades.
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 o código acima é compilado e executado, ele produz o seguinte resultado -
Min : 1
Max : 7
Size of: 4
Enum anônimo
A enumeração sem nome é chamada de enum anônimo. Um exemplo paraanonymous enum é fornecido abaixo.
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 o código acima é compilado e executado, ele produz o seguinte resultado -
Sunday : 0
Monday : 1
Enums anônimos funcionam da mesma forma que enums nomeados, mas não têm as propriedades max, min e sizeof.
Enum com sintaxe de tipo de base
A sintaxe para enumeração com tipo base é mostrada abaixo.
enum :baseType {
enumeration list
}
Alguns dos tipos básicos incluem long, int e string. Um exemplo usando long é mostrado abaixo.
import std.stdio;
enum : string {
A = "hello",
B = "world",
}
int main(string[] args) {
writefln("A : %s", A);
writefln("B : %s", B);
return 0;
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
A : hello
B : world
Mais recursos
A enumeração em D fornece recursos como inicialização de vários valores em uma enumeração com vários tipos. Um exemplo é mostrado abaixo.
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 o código acima é compilado e executado, ele produz o seguinte resultado -
A : 1.200000
B : 2.200000
C : 3
D : 4