Zoeken…


Syntaxis

  • functie Enumeration ' Image (Argument: Enumeration'Base) return String;
  • functie Opsomming ' Img return String; - GNAT
  • functie Enumeration'Val (Argument: Universal_Integer) retourneer Enumeration'Base;
  • functie Enumeration'Pos (Argument: Enumeration'Base) retourneert Universal_Integer;
  • functie Enumeration'Enum_Rep (Argument: Enumeration'Base) retourneert Universal_Integer;
  • functie Letterlijk 'Enum_Rep return Universal_Integer; - GNAT
  • functie Letterlijk 'Adres retour Systeem.Adres;
  • voor het gebruik van de telling (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
  • ( Letterlijk in opsomming) retourneren Boolean;

Literatuur herhalen

Een letterlijke waarde binnen een opsomming is een discreet type, dus we kunnen attribuut Image om erachter te komen welke letterlijke het is als tekstvorm. Merk op dat dit hetzelfde woord afdrukt als in de code (maar in hoofdletters).

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;

Resultaat

BANANA
PEAR
ORANGE
MELON

Het pakket Enumeration_IO gebruiken

In plaats van attribuut Image en Ada.Text_IO.Put opsommingliterals kunnen we alleen het generieke pakket Ada.Text_IO.Enumeration_IO om de literals af te drukken.

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;

Resultaat

BANANA
PEAR
ORANGE
MELON

Eerste letter hoofdletters rest letterletters kleine letters

Attribute Image speelt in alle tekens van de telling letterlijke. De functie Case_Rule_For_Names past hoofdletters toe op het eerste teken en de rest in kleine letters.

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;

Resultaat

Banana
Pear
Orange
Melon

Titelgeval, Enumeration_IO gebruiken, voor een subbereik

Het combineren van hoofdletters en kleine letters met Enumeration_IO en het gebruik van een tekstbuffer voor de afbeelding. Het eerste karakter wordt op zijn plaats gemanipuleerd.

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;

Resultaat

Pear  
Orange
Melon 


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow