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

6.4.1 Ассоциации параметров

Ассоциация параметров определяет связь между фактическим параметром и формальным параметром.

Правила разрешения имен

формальный_параметр_имя_селектора ассоциации параметров должен указывать на спецификацию_параметра вызываемого представления.
Фактический параметр представляет собой либо явный_фактический_параметр, указанный в ассоциации параметров для данного формального параметра, либо соответствующее выражение_по_умолчанию, если для формального параметра не указана ассоциация параметров. Ожидаемый тип фактического параметра — это тип соответствующего формального параметра.
Если режим — in, фактический параметр интерпретируется как выражение; в противном случае фактический параметр интерпретируется только как имя, если возможно.

Правила легитимности

Если режим — in out или out, фактический параметр должен быть именем, обозначающим переменную.
Тип фактического параметра, связанного с параметром доступа, должен быть преобразуем (см. 4.6) к его анонимному типу доступа.

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

Для вычисления ассоциации параметров:
  • Фактический параметр сначала вычисляется.
  • Для параметра доступа определение_доступа разрабатывается, что создает анонимный тип доступа.
  • Для параметра (любого режима), передаваемого по ссылке (см. 6.2), выполняется преобразование фактического параметра к номинальному типу подтипа формального параметра, и формальный параметр обозначает это преобразование.
  • Для параметра in или in out, передаваемого по значению (см. 6.2), объект формального параметра создаётся, и значение фактического параметра преобразуется к номинальному типу подтипа формального параметра и присваивается формальному параметру.
  • Для параметра out, передаваемого по значению, объект формального параметра создаётся, и:
  • Для типа доступа формальный параметр инициализируется из значения фактического, без проверки ограничения;
  • Для составного типа с дискриминантами или имеющего неявные начальные значения для любых подкомпонентов (см. 3.3.1), поведение аналогично параметру in out, передаваемому по значению.
  • Для любого другого типа формальный параметр не инициализирован. Если составной, выполняется преобразование фактического параметра к номинальному типу подтипа формального (что может вызвать Constraint_Error), и фактический подтип формального задаётся преобразованием вида. Если элементарный, фактический подтип формального задается его номинальным подтипом.
Формальный параметр с режимом in out или out с дискриминантами ограничен, если ограничен либо его номинальный подтип, либо фактический параметр.
После нормального завершения и выхода из подпрограммы для каждого параметра in out или out, передаваемого по значению, значение формального параметра преобразуется в подтип переменной, указанной в качестве фактического параметра, и присваивается ей. Эти преобразования и присваивания происходят в произвольном порядке.


Spec-Zone.ru

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