Отложенные константы (deferred constants)
В некоторых спецификациях пакетов возникает необходимость описать константу приватного типа. Это можно выполнить таким же образом как и описание приватного типа (а также большинство опережающих ссылок). В общедоступной части спецификации пакета мы создаем неполное описание константы, после чего, компилятор ожидает получить полное описание константы в приватной части спецификации пакета. Например:
package Coords is
type Coord is private; Home: constant Coord; -- отложенная константа! private type Coord is record X : Integer; Y : Integer; end record; Home : constant Coord := (0, 0); end Coords; |
В результате такого описания, пользователи пакета Coords
"видят" константу Home, которая имеет приватный тип Coord, и могут использовать эту константу в своем коде.
При этом, детали внутреннего представления этой константы им не доступны и они могут о них не заботиться.