수색…


통사론

  • function 열거 형 ' Image (Argument : Enumeration'Base) return 문자열;
  • 함수 열거 형 ' Img return String; - GNAT
  • 함수 Enumeration'Val (인수 : Universal_Integer) 반환 값 Enumeration'Base;
  • function Enumeration'Pos (Argument : Enumeration'Base) return Universal_Integer;
  • function Enumeration'Enum_Rep (Argument : Enumeration'Base) return Universal_Integer;
  • 함수 리터럴 'Enum_Rep return Universal_Integer; - GNAT
  • 함수 리터럴 'Address return System.Address;
  • 열거 형 사용 (Literal_1 => Universal_Integer , Literal_n => Universal_Integer );
  • (열거 형의 리터럴 ) 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 패키지 사용

열거 형 상수에 Image 속성과 Ada.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

첫 문자 대문자 소문자 리터럴 나머지

Attribute 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