ada
Aufzählung
Suche…
Syntax
- Funktion Enumeration ' Image (Argument: Enumeration'Base) return String;
- Funktion Aufzählung ' Img return String; - GNAT
- Funktion Enumeration'Val (Argument: Universal_Integer) return Enumeration'Base;
- Funktion Enumeration'Pos (Argument: Enumeration'Base) return Universal_Integer;
- Funktion Enumeration'Enum_Rep (Argument: Enumeration'Base) return Universal_Integer;
- function Literal 'Enum_Rep return Universal_Integer; - GNAT
- Funktion Literal 'Address return System.Address;
- für die Aufzählung verwenden (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
- ( Wörtlich in Aufzählung) return Boolean;
Literale iterieren
Ein Literal in einer Aufzählung ist ein diskreter Typ, sodass wir das Attribut Image , um herauszufinden, welches Literal es als Textform ist. Beachten Sie, dass das gleiche Wort wie im Code gedruckt wird (jedoch in Großbuchstaben).
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;
Ergebnis
BANANA
PEAR
ORANGE
MELON
Paket Enumeration_IO verwenden
Anstelle des Attributs Image und Ada.Text_IO.Put für Aufzählungsliterale können wir nur das generische Paket Ada.Text_IO.Enumeration_IO zum Ausdrucken der Literale verwenden.
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;
Ergebnis
BANANA
PEAR
ORANGE
MELON
Die ersten Buchstaben in Großbuchstaben ruhen in Kleinbuchstaben
Attribute Image alle Zeichen der Aufzählungsliterale groß. Die Funktion Case_Rule_For_Names wendet Großbuchstaben für das erste Zeichen und den Rest in Kleinbuchstaben an.
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;
Ergebnis
Banana
Pear
Orange
Melon
Titelfall, Verwenden von Enumeration_IO, für einen Unterbereich
Änderung des Zeichenkennzeichens mit Enumeration_IO und Verwendung eines Textpuffers für das Bild. Das erste Zeichen wird an Ort und Stelle manipuliert.
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;
Ergebnis
Pear
Orange
Melon
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow