可以通过使用泛型来实现。泛型是一种在编程中定义可重用代码的方式,它允许我们在不指定具体类型的情况下编写代码。下面是一个示例代码:
generic
type Element_Type is private;
type Array_Type is array (Positive range <>) of Element_Type;
package Empty_Array is
Empty : constant Array_Type(1..0) := (others => <>);
end Empty_Array;
在上面的代码中,我们定义了一个泛型包 Empty_Array
,它包含了一个名为 Empty
的常量,类型为 Array_Type
。Element_Type
是一个私有类型参数,用于指定数组元素的类型。Array_Type
是一个数组类型参数,它是一个具有正整数范围的数组类型。
通过将 Empty
初始化为 (others => <>)
,我们创建了一个空数组。这里的 others
表示数组的所有元素,而 <>
表示空数组。
使用这个泛型包,我们可以在程序中实例化一个包含空数组的数组,如下所示:
with Empty_Array;
procedure Main is
package Int_Array is new Empty_Array(Element_Type => Integer);
package String_Array is new Empty_Array(Element_Type => String);
Int_Arrays : array(1..2) of Int_Array.Array_Type;
String_Arrays : array(1..3) of String_Array.Array_Type;
begin
-- 初始化包含空数组的数组
Int_Arrays(1) := Int_Array.Empty;
Int_Arrays(2) := Int_Array.Empty;
String_Arrays(1) := String_Array.Empty;
String_Arrays(2) := String_Array.Empty;
String_Arrays(3) := String_Array.Empty;
-- 打印数组长度
for I in Int_Arrays'Range loop
Put_Line("Int_Arrays(" & Integer'Image(I) & ")'Length = " & Integer'Image(Int_Arrays(I)'Length));
end loop;
for I in String_Arrays'Range loop
Put_Line("String_Arrays(" & Integer'Image(I) & ")'Length = " & Integer'Image(String_Arrays(I)'Length));
end loop;
end Main;
在上面的代码中,我们实例化了两个不同类型的包含空数组的数组:Int_Arrays
和 String_Arrays
。然后,我们使用 Int_Arrays'Length
和 String_Arrays'Length
打印了数组的长度。
这是一个简单的示例,演示了如何在Ada中创建包含空数组的数组。根据实际需求,你可以根据需要定义更多的泛型包和实例化数组。
领取专属 10元无门槛券
手把手带您无忧上云