Ада: Проверьте, изменились ли параметры OUT (от NULL) после вызова процедуры - PullRequest
0 голосов
/ 05 ноября 2018

Учитывая процедуру с несколькими параметрами OUT, различных типов, все инициализированные как null, как я могу проверить, изменяется ли их значение после вызова процедуры? т.е. если они больше не null.


Я думал, что может быть лучший способ, чем натягивать if (OUTP_1 /= null) and (OUTP_2 /= null) ... then ALL_FINE := TRUE;.

Было бы здорово иметь простое в применении решение, так как на самом деле у меня есть много процедур, для которых это можно проверить. Не в поисках элегантности, а в простоте реализации.

1 Ответ

0 голосов
/ 05 ноября 2018

Ada рассматривает параметры OUT как неинициализированные. Если им не присвоено значение в процедуре, их значениям нельзя доверять.

Вы можете запустить SPARK-анализ процедур. Анализаторы SPARK будут определять неустановленные параметры OUT как неинициализированные переменные.

В качестве альтернативы, если вы используете Ada 2012, вы можете определить постусловия для каждой процедуры. Если вы используете более раннюю версию Ada, вы можете использовать PRAGMA ASSERT для создания аналогичных постусловий.

Установка параметров в NULL перед вызовом процедуры не влияет на параметры OUT. Вы, кажется, путаете параметры OUT с параметрами IN OUT.

...