32
3.4. Идентичность и совместимость типов данных
одинаковые. При именной - не существуют два различные типа (с разными именами),
которые были бы совместимы. В ISO Pascal-е, к которому придерживается и UniPascal,
типизация представляет собою что-то среднее между обоими видами с уклоном к
именной.
3.4.1. Идентичность типов данных
Идентичность типов (type identity) обязательна только при совместимости между
фактическими и формальными параметрами-переменными процедур и функций. Одно
название подсказывает, что если два типа идентичны, они не отличимы друг от друга.
Оба типа T1 и T2 называются идентичными, если справедливо одно из следующих
условий:
*
T1 и T2 представляют один и тот-же тип (например, тип integer идентичен
себе);
*
если T2 определен декларацией type T2 = T1 (или type T1 = T2).
Для идентичных типов справедливы и следующие условия (реляции
эквивалентности):
*
T1 идентичен сам себе;
*
если T1 идентичен типу T2, то и T2 идентичен типу T1;
*
если T1 идентичен типу T2 и T2 идентичен типу T3, то T1 идентичен типу T3
(транзитивность).
При именной сильной типизации T1 идентичен только себе и никому другому.
Примечание: При передачи параметров типа STRING не требуется идентичность
типов. Достаточно только, чтобы фактический параметр имел длину, не меньшую
максимально допустимой длины формального параметра.
3.4.2. Совместимость типов данных
Соместимость типов данных (type compatibility) необходима при использовании
переменных разных типов в выражениях (арифметических и сравнениях).
Два типа называются совместимыми, если удовлетворено любое из следующих
условий:
*
оба типа - идентичные;
*
оба типа - целые;
*
один представляет собою диапазон другого;
*
оба типа - диапазоны некоторого исходного типа и их множества значений
имеют общее пересечение;
*
оба типа - множественные, причем их базовые типы - совместимы;
*
оба типа - упакованные массивы символов (CHAR) с одинаковым числом
компонент;
*
один представляет собою строка (STRING), а другой - или тоже строка или
стандартный тип CHAR;
*
один представляет собою стандартный тип POINTER, а другой - любой
ссылочный тип;
<<  <  GO  >  >>

Вернуться к началу сайта