Справочное руководство по языку Ада-83


Именуемые типы - часть 4


Значения дискриминантов определяют, значения каких компонент, зависящих от дискриминантов, присутствуют в значении записи.

Непосредственное присваивание дискриминанту объекта недопустимо; более того, дискриминант недопустим как фактический параметр вида

in out

или

out

либо как фактический параметр настройки вида

in out.

Единственным путем изменения значения дискриминанта переменной является присваивание (полного) значения самой переменной. Аналогично присваивание самой переменной является единственным путем изменения одной из ее компонент, если определение подтипа компоненты зависит от дискриминанта переменной.

Предвыполнение раздела дискриминантов не имеет другого эффекта.

Примеры:

type

BUFFER(SIZE : BUFFER_SIZE := 100) is -- см. 3.5.4 record

POS : BUFFER_SIZE := 0; VALUE : STRING(1 .. SIZE); end record;

type SQUARE(SIDE : INTEGER) is

record

MAT : MATRIX(1 .. SIDE, 1 .. SIDE); --CM. 3.6 end record:

type DOUBLESQUARE(NUMBER : INTEGER) is

record

LEFT : SQUARE (NUMBER); RIGHT : SQUARE (NUMBER); end record;

type ITEM(NUMBER : POSITIVE) is

record

CONTENT : INTEGER; -- компонента не зависит от дискриминанта end record;

Ссылки:

выражение 4.4, границы диапазона 3.5, дискретный тип 3.5, дискриминант 3.3, идентификатор 2.3, именуемый тип 3.7, имя 4.1, компонента 3.3, компонента записи 3.7, личный тип 7.4, настраиваемый формальный тип 12.1, неполное описание типа 3.8.1, область действия 8.2, обозначение типа 3.3.2, объект 3.2, ограничение дискриминанта 3.7.2, ограничение индекса 3.6.1, описание 3.1, описание компоненты 3.7, описание личного типа 7.4, описание параметра настройки 12.1, описание типа 3.3.1, подкомпонента 3.3, Предвыполнение 3.9, присваивание 5.2, простое имя 4.1, раздел вариантов 3.7.3, составной ограничитель присваивания 2.2, список идентификаторов 3.2, указание подтипа 3.3.2.

3.7.2. ОГРАНИЧЕНИЯ ДИСКРИМИНАНТОВ

Ограничение дискриминанта допустимо только в указании подтипа за обозначением типа. Это обозначение типа должно указывать либо тип дискриминанта, либо ссылочный тип, обозначающий тип с дискриминантом.




Начало  Назад  Вперед