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

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

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

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

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

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

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


Spec-Zone.ru

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