Поиск…


Вступление

Атрибуты подтипа 'Image и 'Value будут принимать, соответственно, скалярное значение и строку, и они возвращают соответственно строку и скалярное значение. Результат 'Image можно ввести в 'Value чтобы получить исходное значение. Обратное также верно.

__Scalar_Object__'Image может использоваться непосредственно на объектах (начиная с Ada 2012-TC-1).

Синтаксис

  • функция Scalar'Image (Аргумент: Scalar'Base) return String;
  • функция Discrete'Image (Аргумент: Discrete'Base) return String;
  • function Integer'Image (Аргумент: Integer'Base) return String;
  • Функция Enumeration'Image (Аргумент: Перечисление) возвращает строку;
  • функция Real'Image (Аргумент: Real'Base) return String;
  • function Numeric'Image (Аргумент: Numeric'Base) return String;
  • функция Scalar'Value (Аргумент: String) возвращает Scalar'Base;
  • функция Discrete'Value (Аргумент: String) return Discrete'Base;
  • function Integer'Value (Аргумент: String) return Integer'Base;
  • function Enumeration'Value (Argument: String) return Enumeration'Base;
  • функция Real'Value (Аргумент: String) возвращает Real'Base;
  • функция Scalar_Object 'Возвращаемое изображение String;

замечания

Обратите внимание, что 'Image может выполнять определенные результаты реализации (RM 3.5), а именно, когда некоторые символы, необходимые для результата String , не определены в Character . Рассмотрим более обширные репертуары 'Wide_Image и 'Wide_Wide_Image .

Ada 2012 (TC-1)

Разрешение использовать атрибут __Scalar_Object__'Image непосредственно на объекте было добавлено в Ada 2012-TC-1 (апрель 2016 г.).

Распечатайте float с помощью атрибута 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;

Результат

2.71000E+00

Распечатайте целое число с помощью атрибута 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;

Результат

17

Вычислить перечисление с использованием атрибута 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;

Результат

ORANGE
PEAR

Распечатка Перечисление с использованием атрибута Изображение

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;

Результат

ORANGE

Распечатка Integer с использованием атрибута Image

with Ada.Text_IO;

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

Результат

17

Распечатайте Float с помощью атрибута Image

with Ada.Text_IO;

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

Результат

2.71000E+00

Как Inverses

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;

Результат

TRUE


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow