ada
Énumération
Recherche…
Syntaxe
- function Enumeration ' Image (Argument: Enumeration'Base) retourne String;
- function Enumeration ' Img return String; - GNAT
- function Enumeration'Val (Argument: Universal_Integer) retourne Enumeration'Base;
- function Enumeration'Pos (Argument: Enumeration'Base) retourne Universal_Integer;
- function Enumeration'Enum_Rep (Argument: Enumeration'Base) retourne Universal_Integer;
- function Literal 'Enum_Rep retourne Universal_Integer; - GNAT
- function Literal 'Retour d'adresse System.Address;
- pour Enumeration use (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
- ( Littéral en Enumération) renvoyer Booléen;
Littérature itérative
Un littéral à l'intérieur d'une énumération est un type discret, nous pouvons donc utiliser l'attribut Image pour déterminer le littéral sous forme de texte. Notez que cela imprime le même mot que dans le code (mais en majuscule).
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;
Résultat
BANANA
PEAR
ORANGE
MELON
Utilisation du package Enumeration_IO
Au lieu d'attribuer Image et Ada.Text_IO.Put aux littéraux d'énumération, nous ne pouvons utiliser que le package générique Ada.Text_IO.Enumeration_IO pour imprimer les littéraux.
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;
Résultat
BANANA
PEAR
ORANGE
MELON
Caractères majuscules
L'attribut Image majuscule tous les caractères des littéraux d'énumération. La fonction Case_Rule_For_Names applique des majuscules pour le premier caractère et rend le reste en minuscule.
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;
Résultat
Banana
Pear
Orange
Melon
Cas de titre, Utilisation de Enumeration_IO, Pour une sous-gamme
Combinaison du changement de casse avec Enumeration_IO et utilisation d'un tampon de texte pour l'image. Le premier caractère est manipulé en place.
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;
Résultat
Pear
Orange
Melon