Spec-Zone.ru › Ada 2012
Справочник Ada 2012

6.2 Режимы формальных параметров

A parameter_specification объявляет формальный параметр с режимом in, in out или out.

Статическая семантика

Параметр передается либо по значению, либо по ссылке. Когда параметр передается по значению, формальный параметр обозначает отдельный объект от фактического параметра, и любая передача информации между ними происходит только до и после выполнения подпрограммы. Когда параметр передается по ссылке, формальный параметр обозначает (вид) объекта, обозначаемого фактическим параметром; чтение и обновление формального параметра напрямую ссылаются на объект фактического параметра.
Тип является типом по значению, если это элементарный тип или если он является потомком частного типа, полный тип которого является типом по значению. Параметр типа по значению передается по значению, если формальный параметр не явно алиасирован.
Тип является типом по ссылке, если он является потомком одного из следующих:
  • размеченного типа;
  • типа задачи или защищенного типа;
  • явного ограниченного типа записи;
  • сложного типа с подкомпонентом типа по ссылке;
  • частного типа, полный тип которого является типом по ссылке.
Параметр типа по ссылке передается по ссылке, как и явно алиасированный параметр любого типа. Каждое значение типа по ссылке имеет связанный объект. Для скобочного выражения, qualified_expression, или преобразования представления, этот объект — тот, что связан с операндом. Для преобразования значения связанный объект является анонимным объектом результата, если такой объект создается (см. 4.6); в противном случае это связанный объект операнда. Для conditional_expression этот объект — тот, что связан с вычисленным зависимым_выражением.
Для других параметров неявно, передается ли параметр по значению или по ссылке.

Ограниченные (временно́й) ошибки

Если одно имя обозначает часть формального параметра, а второе имя обозначает часть другого формального параметра или объекта, который не является частью формального параметра, то эти два имени считаются различными путями доступа. Если объект имеет тип, для которого механизм передачи параметров не указан и не является явно алиасированным параметром, то присваивание объекту через один путь доступа и последующее чтение значения объекта через другой путь доступа является ограниченной ошибкой, за исключением случая, когда первый путь доступа обозначает часть формального параметра, который больше не существует в момент второго доступа (из-за выхода из соответствующей вызываемой конструкции). Возможными последствиями являются возбуждение Program_Error, чтение только что присвоенного значения или чтение какого-либо старого значения объекта.
ПРИМЕЧАНИЯ
6 Режим формального параметра описывает направление передачи информации к или от subprogram_body (см. 6.1).
7 Формальный параметр с режимом in является постоянным представлением (см. 3.3); он не может быть обновлен в рамках subprogram_body.
8 Формальный параметр с режимом out может быть неинициализированным в начале subprogram_body (см. 6.4.1).


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API