Итак, мы знаем, что Ada поддерживает параметры по умолчанию, например,
procedure Example(param1 : Integer := 1);
Но мой вопрос: где оценивается параметр по умолчанию?На всех языках, где я знаком, параметр по умолчанию просто вставляется в вызывающий код, что требует последующей перекомпиляции, если параметр по умолчанию изменен.Использует ли Ада этот же подход?
Я попытался выполнить поиск в ARM 2012, но не смог найти «параметр по умолчанию» нигде во всем документе.Затем я проверил 6.4 и 6.4.1, где кажется, что ARM вызывает соответствующую часть «выражения по умолчанию».Однако «выражения по умолчанию» ссылаются на 3.7 дискриминантов.Это может быть использовано для уменьшения количества определений чего-либо, однако, если для двух понятий характерно то, что программисты должны делать, и определять это отдельно;этот переход сбивает с толку и выглядит как ошибка.
Примечание 59 гласит:
Выражение default_expect для дискриминанта типа оценивается, когда объект неограниченного подтипа типасоздал.
Ну, это не имеет никакого смысла в отношении вызовов подпрограмм.
Опять же, когда это "выражение по умолчанию" для подпрограммы на самом деле оценивается?