Ada正在对一系列记录进行编程



我是Ada的新手,我试图创建一个记录数组,然后将一些记录放入该数组,但我遇到了错误nested array aggregate expected。这是我的代码:

with Ada.Text_IO; use Ada.Text_IO;   
with Ada.Integer_Text_Io;
with Ada.unchecked_conversion;
procedure main is
  type Byte is range 0..255;
  for Byte'Size use 8;
  type Pixel is record
    R:Byte;
    G:Byte;
    B:Byte;
  end record;
  for Pixel'Size use 24;
  r1:Pixel := (1,2,5);
  r2:Pixel := (1,2,3);
  r3:Pixel := (1,2,3);
  type Image is array(Positive range <>, Positive range <>) of Pixel;
  Pragma Pack(Image);
  Left:Image(1..3, 1..1) := (r1, r2, r3);
begin
    null;
end main;

二维数组需要一个二维聚合,即每个元素也是一个聚合的聚合。例如:

type Integer_Matrix is array (Positive range <>, Positive range <>) of Integer;
M : Integer_Matrix (1..2, 1..2) := ( (1, 2), (3, 4) );

当任一维度的长度为1时,都需要特殊处理,因为括号中的单个值不会被视为聚合。一个单元素聚合需要写成(1=>Value)[如有必要,使用实际索引代替1]。在您的情况下,每行图像的长度为1。因此,聚合将有三个元素,每个元素都是长度为1的另一个聚合。它需要看起来像这样:

Left : Image (1..3, 1..1) := ( (1=>r1), (1=>r2), (1=>r3) );

最新更新