Szukaj…


Wprowadzenie

Atrybuty podtypu 'Image i 'Value przyjmą odpowiednio wartość skalarną i ciąg znaków i zwracają odpowiednio ciąg znaków i wartość skalarną. Wynik 'Image można wprowadzić do 'Value aby uzyskać oryginalną wartość. Odwrotna jest również prawda.

__Scalar_Object__'Image może być używany bezpośrednio na obiektach (od Ada 2012-TC-1).

Składnia

  • funkcja Scalar'Image (Argument: Scalar'Base) return String;
  • funkcja Discrete'Image (Argument: Discrete'Base) return String;
  • funkcja Integer'Image (Argument: Integer'Base) return String;
  • funkcja Enumeration'Image (Argument: Enumeration'Base) return String;
  • funkcja Real'Image (Argument: Real'Base) return String;
  • funkcja Numeric'Image (Argument: Numeric'Base) return String;
  • funkcja Scalar'Value (Argument: String) return Scalar'Base;
  • funkcja Discrete'Value (Argument: String) return Discrete'Base;
  • funkcja Integer'Value (Argument: String) return Integer'Base;
  • funkcja Enumeration'Value (Argument: String) return Enumeration'Base;
  • funkcja Real'Value (Argument: String) zwraca Real'Base;
  • funkcja Scalar_Object 'Zwrot obrazu Ciąg;

Uwagi

Zauważ, że 'Image może ponieść realizacji określonych wyników (Rz 3,5), a mianowicie, gdy niektóre znaki graficzne potrzebne do String rezultacie nie są zdefiniowane w Character . Rozważ większe repertuary 'Wide_Image i 'Wide_Wide_Image .

Ada 2012 (TC-1)

Zezwolenie na używanie atrybutu __Scalar_Object__'Image bezpośrednio na obiekcie został dodany w Adzie 2012-TC-1 (kwiecień 2016).

Wydrukuj liczbę zmiennoprzecinkową za pomocą atrybutu Image

Ada 2012 (TC-1)
with Ada.Text_IO;

procedure Main is
   type Some_Float digits 8 range 0.0 .. 10.0;
   X : Some_Float := 2.71;
begin
   Ada.Text_IO.Put_Line (X'Image);
end Main;

Wynik

2.71000E+00

Wydrukuj liczbę całkowitą za pomocą atrybutu Image

Ada 2012 (TC-1)
with Ada.Text_IO;

procedure Main is
   type Some_Integer is range -42 .. 42;
   X : Some_Integer := 17;
begin
   Ada.Text_IO.Put_Line (X'Image);
end Main;

Wynik

17

Wydrukuj wyliczenie za pomocą atrybutu Image

Ada 2012 (TC-1)
with Ada.Text_IO;

procedure Main is
   type Fruit is (Banana, Orange, Pear);
   X : Fruit := Orange;
begin
   Ada.Text_IO.Put_Line (X'Image);
   Ada.Text_IO.Put_Line (Pear'Image);
end Main;

Wynik

ORANGE
PEAR

Wydrukuj wyliczenie za pomocą atrybutu Obraz

with Ada.Text_IO;

procedure Main is
   type Fruit is (Banana, Orange, Pear);
   X : Fruit := Orange;
begin
   Ada.Text_IO.Put_Line (Fruit'Image (X));
end Main;

Wynik

ORANGE

Wydrukuj liczbę całkowitą za pomocą atrybutu Obraz

with Ada.Text_IO;

procedure Main is
   X : Integer := 17;
begin
   Ada.Text_IO.Put_Line (Integer'Image (X));
end Main;

Wynik

17

Wydrukuj Float za pomocą atrybutu Image

with Ada.Text_IO;

procedure Main is
   X : Float := 2.71;
begin
   Ada.Text_IO.Put_Line (Float'Image (X));
end Main;

Wynik

2.71000E+00

Jako inwersje

with Ada.Text_IO;

procedure Image_And_Value is
   type Fruit is (Banana, Orange, Pear);
   X  : Fruit := Orange;
begin
   Ada.Text_IO.Put_Line (Boolean'Image
      (Fruit'Value (Fruit'Image (X)) = X
          and
       Fruit'Image (Fruit'Value ("ORANGE")) = "ORANGE"));
end Image_And_Value;

Wynik

TRUE


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow