Ada 使用所有默认值初始化记录类型的常量变量
说我有一个类型Ada 使用所有默认值初始化记录类型的常量变量,ada,Ada,说我有一个类型 type Record_T is record VAR1 : integer := 1; VAR2 : string := ""; end record; 如果要初始化此类型的常量变量,可以通过以下几种方式进行初始化: Null_Record : constant Record_T := (1, ""); Null_Record : constant Record_T := Record_T'(1, ""); 但这迫使我指定默认值,而我之
type Record_T is
record
VAR1 : integer := 1;
VAR2 : string := "";
end record;
如果要初始化此类型的常量变量,可以通过以下几种方式进行初始化:
Null_Record : constant Record_T := (1, "");
Null_Record : constant Record_T := Record_T'(1, "");
但这迫使我指定默认值,而我之前已经指定了它们
我尝试了以下所有方法,但均无效
Null_Record : constant Record_T := ();
Null_Record : constant Record_T := Record_T'();
Null_Record : constant Record_T;
但一定有办法做到这一点?至少,如果Ada缺少这种功能,我会感到非常惊讶。在Ada 2005中,使用
操作符为聚合使用新的“默认值初始化”,这似乎是可能的
这看起来像
Null_Record : constant Record_T := (others => <>);
Null\u记录:常量记录\u T:=(其他=>);
在2005年《美国残疾人法案》之前,我看不出有什么办法可以做到这一点。不幸的是,对于我来说,这不是一个解决方案,因为我一直坚持使用Ada 95。ISO/IEC 8652:2007之前的典型方法,假设您的类型在包中,是在可见部分声明一个延迟常量:
Null_Record : constant Record_T;
然后在私人部分用以下内容完成:
Null_Var : Record_T;
Null_Record : constant Record_T := Null_Var;
有点罗嗦,但它完成了任务。非常感谢!这可能是公认的答案。