Operadores y atributos predefinidos
A parte del operador de igualdad ("="), los tipos enumeración tienen predefinidos todos los
operadores∞ de orden: "<", "<=", "=", "/=", ">=", ">"; donde la relación de orden viene dada implicitamente por la secuencia de los literales: cada literal tiene una posición, empezando por 0 para el primero, que se incrementa en uno para cada sucesor. Esta posición se puede obtener mediante el
atributo∞ 'Pos; el inverso es 'Val, que devuelve el valor correspondiente a una posición. En nuestro ejemplo:
Color_Primario'Pos (Rojo) = 0
Color_Primario'Val (0) = Rojo
Los literales pueden
sobrecargarse∞, es decir, puede haber otro tipo con los mismos literales.
type∞ Luz_de_Tráfico
is∞ (Rojo, Ambar, Verde);
Normalmente se puede determinar por el contexto a qué tipo pertenece el literal Rojo. Cuando es imposible, el programador ha de usar una expresión de desambiguación: Tipo'(Valor).
Literales carácter
Una característica bastante única de Ada es la posibilidad de usar literales caracter como literales de una enumeración.
type∞ ABC
is∞ ('A', 'B', 'C');
El literal 'A' no tiene mucho que ver con el literal 'A' del tipo predefinido Character (o Wide_Character).
Todo tipo que tiene al menos un literal carácter es un tipo carácter. Para todo tipo carácter, existen literales de cadena y el operador de concatenación predefinido "&".
type∞ Mi_Caracter
is∞ (No_Caracter, 'a', Literal, 'z');
type∞ Mi_String
is∞ array∞ (Positive
range∞ <>)
of∞ Mi_Caracter;
S: Mi_String := "aa" & Literal & "za" & 'z';
T: Mi_String := ('a', 'a', Literal, 'z', 'a', 'z');
En este ejemplo, S y T contienen el mismo valor.
El tipo predefinido Character se define de este modo en el
paquete Standard∞.
Tipo boolean
El tipo predefinido
boolean es una enumeración definida en el
paquete Standard∞ de este modo:
type∞ Boolean
is∞ (False, True);
Por esta razón el tipo boolean tiene todos los atributos definidos para cualquier otra enumeración.
Subtipos de enumeración
Se puede usar un rango para definir un
subtipo∞ sobre una enumeración:
subtype∞ Letra_Mayúscula
is∞ Character
range∞ 'A' .. 'Z';
subtype∞ Color_Frío
is∞ Color_Primario
range∞ Verde .. Azul;
Manual de referencia de Ada