ada
Opsomming
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