for 循环中缺少操作数

Missing operand in for loop

我有这样一个冒泡排序语句;

   procedure Bubble_Sort (Data: in out List) is

      sorted: Boolean := false;
      last : Integer := Data'LAST;
      temp  : Integer;

   begin

      while (not (sorted)) loop
         sorted := true;
         for check in range Data'First..(last-1) loop
            if Data(check) < Data(check+1) then
               -- swap two elements
               temp := Data(check);
               Data(check) := Data(check+1);
               Data(check+1) := temp;
               -- wasn't already sorted after all
               sorted := false;
            end if;
         end loop;
         last := last - 1;
      end loop;

   end Bubble_sort;

我这样定义 'Data':

   Unsorted : constant List := (10, 5, 3, 4, 1, 4, 6, 0, 11, -1);
   Data : List(Unsorted'Range);

而'List'的类型定义是;

type List    is array (Index range <>) of Element;

上线

for check in range Data'Range loop

我遇到缺少操作数错误。我该如何解决这个问题?

删除 range 关键字: for check in Data'Range loop

range 关键字用于定义范围和子类型(有时是匿名的),当您使用 'Range 属性时不需要它。