GNAT Studio ADA 收到错误 "expected type "Standard.Integer”

GNAT Studio ADA getting error "expected type "Standard.Integer"

在此 Intro to Ada Course section about Arrays 中,它表明我可以使用用户定义类型“索引”来索引数组,但是当我尝试使用用户定义类型索引数组时,它显示预期类型“Standard.Integer”。我问这个的原因是因为它明确指出您可以使用任何离散类型来索引数组。

procedure Cipher is
   type Byte is mod 2**8;
   type BufferArray is array ( 0 .. 15 ) of Byte;
   type Index is range 1 .. 16;
   Buffer: BufferArray := (0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   buber: Byte := 255;
begin
   --  Insert code here.
   for I in Index loop
      Put( Byte'Image(Buffer(I)) ); --error shows up here
   end loop;
   null;
end Cipher;

有没有可能是这个特定版本的 GNAT 有问题?

您将数组定义为使用您自己定义的类型进行索引:

type BufferArray is array (Index) of Byte;

作为奖励,这个定义自动删除了代码中的一个错误。