在 Ada 中,如何从第一个索引之后开始按任何索引遍历任何数组?“任何数组”是指空数组和索引也不是整数的数组。
编辑:如果需要初始条件来处理极端情况 - 例如:空数组 - 那很好。
编辑:指定“任何索引”而不仅仅是第二个。
请记住,Ada 'for' 循环不包括增量运算符。相反,它遍历一系列值。值的范围可能是整个数组索引集,也可能是该范围的连续子集。完成此操作的最简单方法是声明一个不受约束的数组类型,然后传递要处理的数组切片。
procedure main is
type Days is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
type Day_Counts is array(Days range <>) of Integer;
function Total(Item : in Day_Counts) return Integer is
Sum : Integer := 0;
begin
for Day in Item'Range loop
Sum := Sum + Item(Day);
end loop;
return Sum;
end Total;
Weekly_Counts : DayCounts := (1,2,3,4,5,6,7);
Weekly_Sum : Integer;
Weekend_Sum : Integer;
begin
Weekly_Sum := Total(Weekly_Counts);
Weekend_Sum := Total(Weekly_Counts(Sat..Sun));
end main;
Run Code Online (Sandbox Code Playgroud)
Weekly_Sum 中的值将是所有 7 个数组元素的总和。Weekend_Sum 中的值将仅为 Sat 和 Sun 值的总和。