任何静态初始化 Ada 2012 Map 的方法
Any way to statically initialize an Ada 2012 Map
我正在尝试创建一个全局地图,该地图可以被构建关卡的过程引用。
如果可以在规范 (.ads) 中静态填充此全球地图,那就太理想了。
这是我尝试猜测如何执行静态初始化部分的一些错误代码:
package Positive_to_Positive_Type is new Ada.Containers.Formal_Ordered_Maps
(Key_Type => Positive,
Element_Type => Positive);
Positive_to_Positive : Positive_to_Positive_Type.Map :=
((1 => 11),
(2 => 12));
报错如下:
expected private type "Ada.Containers.Formal_Ordered_Maps.Map" from instance at line 1
found a composite type
现在我知道我正在应用类似记录的语法来尝试初始化动态结构,甚至可以使用 .ads 中的值初始化映射,还是必须始终使用插入等来完成在 adb 中?
谢谢。
您可以在包初始化级别执行此操作。
假设您在包规范 'A' 中声明了 Positive_to_Positive 和 Positive_to_Positive_Type,您的包体可能如下所示:
package body A is
begin
Positive_to_Positive.Insert (1, 11)
Positive_to_Positive.Insert (2, 12)
end A;
我正在尝试创建一个全局地图,该地图可以被构建关卡的过程引用。
如果可以在规范 (.ads) 中静态填充此全球地图,那就太理想了。
这是我尝试猜测如何执行静态初始化部分的一些错误代码:
package Positive_to_Positive_Type is new Ada.Containers.Formal_Ordered_Maps
(Key_Type => Positive,
Element_Type => Positive);
Positive_to_Positive : Positive_to_Positive_Type.Map :=
((1 => 11),
(2 => 12));
报错如下:
expected private type "Ada.Containers.Formal_Ordered_Maps.Map" from instance at line 1
found a composite type
现在我知道我正在应用类似记录的语法来尝试初始化动态结构,甚至可以使用 .ads 中的值初始化映射,还是必须始终使用插入等来完成在 adb 中?
谢谢。
您可以在包初始化级别执行此操作。 假设您在包规范 'A' 中声明了 Positive_to_Positive 和 Positive_to_Positive_Type,您的包体可能如下所示:
package body A is
begin
Positive_to_Positive.Insert (1, 11)
Positive_to_Positive.Insert (2, 12)
end A;