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 


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow