ada
Enumeración
Buscar..
Sintaxis
- function Enumeration ' Image (Argument: Enumeration'Base) return String;
- function Enumeration ' Img return String; - GNAT
- function Enumeration'Val (Argument: Universal_Integer) return Enumeration'Base;
- function Enumeration'Pos (Argument: Enumeration'Base) return Universal_Integer;
- function Enumeration'Enum_Rep (Argument: Enumeration'Base) return universal_Integer;
- function Literal 'Enum_Rep return Universal_Integer; - GNAT
- función Literal 'Dirección de retorno System.Address;
- para uso de enumeración (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
- ( Literal in Enumeration) return Boolean;
Literales iterando
Un literal dentro de una enumeración es un tipo discreto, por lo que podemos usar la Image atributo para averiguar qué literal es el formulario de texto. Observe que esto imprime la misma palabra que en el código (pero en mayúsculas).
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
type Fruit is (Banana, Pear, Orange, Melon);
begin
for I in Fruit loop
Put (Fruit'Image (I));
New_Line;
end loop;
end;
Resultado
BANANA
PEAR
ORANGE
MELON
Usando el paquete Enumeration_IO
En lugar del atributo Image y Ada.Text_IO.Put en literales de enumeración, solo podemos usar el paquete genérico Ada.Text_IO.Enumeration_IO para imprimir los literales.
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
type Fruit is (Banana, Pear, Orange, Melon);
package Fruit_IO is new Enumeration_IO (Fruit); use Fruit_IO;
begin
for I in Fruit loop
Put (I);
New_Line;
end loop;
end;
Resultado
BANANA
PEAR
ORANGE
MELON
Primer carácter mayúscula resto minúsculas literales
Image atributo en mayúscula todos los caracteres de literales de enumeración. La función Case_Rule_For_Names aplica mayúsculas para el primer carácter y hace que el resto Case_Rule_For_Names minúscula.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants;
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
procedure Main is
type Fruit is (Banana, Pear, Orange, Melon);
function Case_Rule_For_Names (Item : String) return String is
begin
return Translate (Item (Item'First .. Item'First), Upper_Case_Map) & Translate (Item (Item'First + 1 .. Item'Last), Lower_Case_Map);
end;
begin
for I in Fruit loop
Put (Case_Rule_For_Names (Fruit'Image (I)));
New_Line;
end loop;
end;
Resultado
Banana
Pear
Orange
Melon
Título del caso, Uso de Enumeration_IO, para un subrango
Combinando el caso de cambio de caracteres con Enumeration_IO y utilizando un búfer de texto para la imagen. El primer personaje es manipulado en su lugar.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Characters.Handling; use Ada.Characters.Handling;
procedure Main is
type Fruit is (Banana, Pear, Orange, Melon);
package Fruit_IO is new Enumeration_IO (Fruit);
Buffer : String (1 .. Fruit'Width);
begin
for I in Fruit range Pear .. Fruit'Last loop
Fruit_IO.Put (To => Buffer,
Item => I,
Set => Lower_Case);
Buffer (Buffer'First) := To_Upper (Buffer (Buffer'First));
Put_Line (Buffer);
end loop;
end;
Resultado
Pear
Orange
Melon