首页 > 解决方案 > 评估 Ada 的子程序声明部分顺序

问题描述

对于 Ada 中子程序的声明部分,变量赋值的求值顺序是否与声明它们的顺序相同?例如,如果我写

procedure Foo() is
I: Integer := 4;
J: Integer := I * 2;
begin
--do stuff
end Foo;

我可以肯定地说I之前总是会被评估J吗?

标签: ada

解决方案


根据ARM 3.11(7),在我看来,声明性项目确实是按顺序评估的:

declarative_part 的细化包括 declarative_items 的细化,如果有的话,按照它们在 declarative_part 中给出的顺序。


编辑: ARM的来源


推荐阅读