ada
Uppräkning
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.Put på Ada.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