ada中运行时确定的动态数组大小

ada中运行时确定的动态数组大小,ada,dynamic-arrays,Ada,Dynamic Arrays,是否可能有一个数组,其大小在运行时确定,如下所示 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 arra

是否可能有一个数组,其大小在运行时确定,如下所示

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;
程序程序是
myArray类型是浮点的数组(整数范围);
arraySize:整数:=0;
数组:myArray(0..arraySize);
开始
--从用户处获取数组大小。
放线(“你想要多大的阵列?”);
得到(排列);
对于0中的I..arraySize循环
阵列(I):=1.2*I;
端环;
结束程序;

除了使用动态链接列表或其他类似结构之外,是否还有其他方法可以实现此结果?或者是否有一个简单的内置数据结构比使用动态链接列表更简单?

当然,在块中声明它,如下所示:

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;

这只是说明性的(而不是编译:-),因为您需要处理无效数组大小之类的问题。

是的,您可以推迟受约束对象的声明,直到知道大小为止。在这种情况下,可以在嵌套块(由关键字
declare
引入)或堆(使用关键字
new
)中分配数组
候选者。在这个相关的循环中,
Line
每次通过循环时都有不同的大小,这取决于
Get\u Line
找到的内容

非常感谢你。我完全不知道你能做这样的事。虽然这很有意义,因为这基本上就是你对函数和程序所做的,哈哈。
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;