Sök…


Syntax

  • funktion Enumeration ' Image (Argument: Enumeration'Base) return String;
  • funktion Uppräkning ' Img return String; - GNAT
  • funktion Enumeration'Val (Argument: Universal_Integer) return Enumeration'Base;
  • funktion Enumeration'Pos (Argument: Enumeration'Base) returnerar Universal_Integer;
  • funktion Enumeration'Enum_Rep (Argument: Enumeration'Base) returnerar Universal_Integer;
  • funktion Literal 'Enum_Rep return Universal_Integer; - GNAT
  • funktion Bokstavsadress Adress System. Adress;
  • för användning av uppräkning (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
  • ( Literal in Enumeration) återvänd Boolean;

Iterating bokstäver

En bokstavlig inne i en uppräkning är en diskret typ så vi kan använda attributet Image att ta reda på vilken bokstavlig det är som textform. Lägg märke till att detta skriver ut samma ord som i koden (men i versaler).

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;

Resultat

BANANA
PEAR
ORANGE
MELON

Med hjälp av paketet Enumeration_IO

Istället för attributet Image och Ada.Text_IO.PutAda.Text_IO.Put bokstäver kan vi bara använda det generiska paketet Ada.Text_IO.Enumeration_IO att skriva ut bokstäverna.

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;

Resultat

BANANA
PEAR
ORANGE
MELON

Första bokstaven överställer stora bokstäver

Attribut Image aktiverar alla tecken i uppräknings litteraler. Funktionen Case_Rule_For_Names gäller för versaler för det första tecknet och gör resten till små bokstäver.

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;

Resultat

Banana
Pear
Orange
Melon

Titelfall, med enumeration_IO, för en Subrange

Kombinera ändring av teckenfall med Enumeration_IO och använda en textbuffert för bilden. Den första karaktären manipuleras på plats.

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;

Resultat

Pear  
Orange
Melon 


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow