是否可以使用在运行时确定大小的数组,如此
Procedure prog is
type myArray is array(Integer range <>) of Float;
arraySize : Integer := 0;
theArray : myArray(0..arraySize);
Begin
-- Get Array size from user.
put_line("How big would you like the array?");
get(arraySize);
For I in 0..arraySize Loop
theArray(I) := 1.2 * I;
End Loop;
End prog;
除了使用动态链接列表或其他类似结构之外,还有办法实现此结果吗?或者是否有一个简单的内置数据结构比使用动态链接列表更简单?
答案 0 :(得分:7)
当然,请按如下方式在块中声明:
procedure prog is
arraySize : Integer := 0;
type myArray is array(Integer range <>) of Float;
begin
-- Get Array size from user.
put_line("How big would you like the array?");
get(arraySize);
declare
theArray : myArray(0..arraySize);
begin
for I in 0..arraySize Loop
theArray(I) := 1.2 * I;
end Loop;
end;
end prog;
或将arraySize作为参数传递给子程序,并在该子程序中声明并对其进行操作:
procedure Process_Array (arraySize : Integer) is
theArray : myArray(0..arraySize);
begin
for I in arraySize'Range Loop
theArray(I) := 1.2 * I;
end Loop;
end;
这只是说明性的(而不是编译:-),因为你需要处理无效数组大小等事情。
答案 1 :(得分:1)