サーチ…


構文

  • 関数Enumeration ' Image (Argument:Enumeration'Base)戻り値文字列。
  • ファンクション列挙体 ' Img return String; - GNAT
  • function Enumeration'Val(引数:Universal_Integer)戻り値Enumeration'Base;
  • function Enumeration'Pos(Argument:Enumeration'Base)戻り値Universal_Integer;
  • function Enumeration'Enum_Rep(Argument:Enumeration'Base)戻り値Universal_Integer;
  • 関数リテラル 'Enum_Rep return Universal_Integer; - GNAT
  • 関数リテラル 'Address return System.Address;
  • 列挙型の使用(Literal_1 => Universal_Integer 、Literal_n => Universal_Integer );
  • (Enumerationのリテラル )return Boolean;

リテラルの繰り返し

列挙型の内部のリテラルは離散型であるため、属性Imageを使用してリテラルがテキスト形式であるかどうかを調べることができます。これは、コードと同じ単語を出力することに注意してください(ただし、大文字)。

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;

結果

BANANA
PEAR
ORANGE
MELON

パッケージEnumeration_IOの使用

属性ImageAda.Text_IO.Put代わりに列挙型リテラルでは、汎用パッケージAda.Text_IO.Enumeration_IOを使用してリテラルを印刷することしかできません。

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;

結果

BANANA
PEAR
ORANGE
MELON

最初の文字の大文字の残り小文字のリテラル

属性Imageは、列挙リテラルのすべての文字を大文字にします。関数Case_Rule_For_Namesは、最初の文字に大文字を適用し、残りを小文字にします。

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;

結果

Banana
Pear
Orange
Melon

タイトルケース、Enumeration_IOを使用して、サブレンジに対して

文字の大文字小文字の変更Enumeration_IOと組み合わせ、イメージのテキストバッファを使用する。最初の文字はその場で操作されます。

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;

結果

Pear  
Orange
Melon 


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow