Введение в программирование - Учебное пособие (Корочкин А. В.)

4.3 эквивалентность типов

В Аде используется именная эквивалентность типов. То есть объекты являются эквивалентными тогда и только тогда, когда они описаны с помощью одного и того же идентификатора типа.

П Например:

А, В    :   Vec16;

С        :   Vec16;     -- объекты А, В и С имеют одинаковый тип

X, Y    :    array (1 .. 20)   of  Float; - - все три объекта имеют разный Z        :    array (1 .. 20)   of  Float; - - (анонимный) тип

Преобразование типов осуществляется как преобразование выражений по следующему правилу:

Имя_типа (Выражение);

Преобразования разрешены только для числовых производных и индексируемых типов. При этом должны соблюдаться определённые требования, такие как наличие общего родительского типа для производных типов и одинаковая размерность и тип компонент для индексируемых типов.

П Например: X:    integer; Z :    float;

X : ч   integer ( Z + 2.33 );

Z : =   float ( X ) + Z / 4.235E-03;

Кроме того, возможно и обратное преобразование типов. В Аде не допускаются неявные преобразования типов, так как они делают программы трудными для понимания.

Переходы от подтипов к базовому типу и наоборот не являются преобразованием типа, так как подтип не вводит новый тип.