Ниже приведен пример описания_формального_объекта:
Maximum_Size : Integer;
Ниже приведен синтаксис описания значения или переменной, как формального объекта в BNF форме:
описание_формального_объекта ::= список_идентификаторов ":" ["in"| "in out" ] имя_типа [ ":=" выражение_по_умолчанию ] ";"
Мы уже видели пример описания формального типа. Формальные типы специфицируют имя типа и допустимые ``виды типов''. Описание формального типа указывает "минимальный" или "крайний" требуемый тип. Самый "минимальный" тип в Аda называется "limited private". Это "крайний" тип, так как ключевое слово "private" означает, что нельзя узнать ничего о том, как он реализован, а "limited" означает, что к нему неприменимы операции присваивания или равенства.
Описание формального типа имеет следующий синтаксис (он, в общем-то, сильно упрощен; на самом деле имеются гораздо большие возможности):
описание_формального_типа ::= "type" определяющий_идентификатор "is" определение_формального_типа ";" определение_формального_типа ::=["tagged"] ["limited"] "private" | "(<>)"
Давайте рассмотрим несколько примеров с комментариями:
type Item is limited private; -- Item может быть любым типом. type Item is private; -- Item может быть любым типом, для которого -- определены операции присваивания(:=) и равенства (=). type Item is tagged limited private; -- Item может быть любым тэговым -- типом. type Item is tagged private; -- Item может быть любым тэговым типом -- с определенной операцией :=. type Item is (<>); -- Item может быть любым дискретным типом, -- включая Integer и Boolean.
В следующем уроке будет рассмотрен пример, который сделает это более понятным.
Если необходимо создать настраиваемый модуль с формальным типом Unit, который может быть любым типом, как он должен быть описан?
Перейти к предыдущему разделу | Перейти к следующему разделу | Вернуться к содержанию Урока 11 |
---|
David A. Wheeler (dwheeler@ida.org)
Исходная копия этого документа находится по адресу
"http://www.adahome.com/Tutorials/Lovelace/s11s2.htm".
Исходная копия перевода размещена на сайте http://www.ada-ru.org
Перевод: Юрий Королев
Общая редакция перевода: Г.Ю. Сисюк