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


Описания личных типов и субконстант - часть 8


Из правил для лимитируемых типов вытекает следующее:

• Если тип объекта является лимитируемым, то в описании этого объекта явная инициализация недопустима.

• Если тип именуемой компоненты является лимитируемым, то выражение по умолчанию в описании компоненты недопустимо.

• Если тип объекта, указанного ссылочным типом, является лимитируемым, то в генераторе явная инициализация недопустима.

• Формальный параметр настройки вида

in

не должен быть лимитируемого типа.

Примечание.

Описанные выше правила не исключают выражение по умолчанию для формального параметра лимитируемого типа; они не исключают также субконстанту лимитируемого типа, если полный тип не является лимитируемым. Для лимитируемого типа допускается явное описание операции равенства (см. 6.7).

Для лимитируемого составного типа не разрешаются агрегаты (см. 3.6.2 и 3.7.4). Для лимитируемого индексируемого типа не разрешается катенация (см. 3.6.2).

Пример:

package I_O_PACKAGE is type FILE_NAME is limited private;

procedure OPEN (F in out FILE_NAME); procedure CLOSE (F in out FILE_NAME); procedure READ (F in FILE_NAME; ITEM : out INTEGER); procedure WRITE (F in FILE_NAME; ITEM : in INTEGER); private

type FILE_NAME is record

INTERNAL_NAME : INTEGER := 0; end record;

end I_0_PACKAGE;

package body I_0_PACKAGE is

LIMIT : constant := 200; type FILE_DESCRIPTOR is record ... end record;

DIRECTORY : array (1 .. LIMIT) of P1LE_DESCRIPTOR; ... procedure OPEN (F in out FILE_NAME) is ... end;

procedure CLOSE (F in out FILEJMAME) Is ... end;

procedure READ (F in FILE_NAME; ITEM : out INTEGER) is ... end:

procedure WRITE (F in FILEJMAME; ITEM : in INTEGER) Is ... end;

begin

... end I_O_PACKAGE;

Примечание к примеру.

В приведенном примере для внешних подпрограмм, использующих !_ О-PACKAGE, имя файла можно получить в результате вызова процедуры OPEN, а затем использовать его в вызовах процедур READ и WRITE. Следовательно, вне пакета имя файла, полученное после вызова процедуры OPEN, выполняет функцию пароля; его внутренние свойства (например, содержать числовое значение) неизвестны, и никакие другие операции (такие как сложение или сравнение внутренних имен) над этим именем не могут выполняться.




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