Руководство по Ada (Ada 2022)
6.7 Процедуры без тела
Оператор null_procedure_declaration предоставляет сокращенный способ объявления процедуры с пустым телом.
Синтаксис
null_procedure_declaration ::=
[overriding_indicator]
procedure_specification is null
[aspect_specification];
[overriding_indicator]
procedure_specification is null
[aspect_specification];
Правила допустимости
Если оператор null_procedure_declaration является завершением, он должен быть завершением объявления subprogram_declaration или generic_subprogram_declaration. Профиль оператора null_procedure_declaration, который завершает объявление, должен полностью соответствовать этому объявлению.
Статическая семантика
Оператор null_procedure_declaration, который не является завершением, объявляет процедуру без тела. Завершение не разрешено для null_procedure_declaration; однако, null_procedure_declaration может завершать предыдущее объявление.
Динамическая семантика
Вызов процедуры без тела вызывается с помощью вызова подпрограммы. При вызове подпрограммы для процедуры без тела или процедуры, завершенной с помощью null_procedure_declaration, выполнение subprogram_body не оказывает никакого эффекта.
Выполнение оператора null_procedure_declaration не имеет других последствий, кроме как обеспечить возможность вызова процедуры без тела без сбой проверки Elaboration_Check.
Примеры
Пример объявления процедуры без тела:
procedure Simplify(Expr : in out Expression) is null; -- см. 3.9
-- По умолчанию Simplify ничего не делает, но может быть переопределена в расширениях Expression
-- По умолчанию Simplify ничего не делает, но может быть переопределена в расширениях Expression