我是Ada的新手,我在下面看到Ada示例代码可以解释它的作用,
--
-- An array of array (which is different from a 2-d array).
--
with Gnat.Io; use Gnat.Io;
procedure Arr4 is
type CS is (G_Wiggins, M_Wiggins, Bennet, Woodall);
type CSMap is array (CS) of Integer;
A: array (1..3) of CSMap :=((4, 8, 17, 34),(9, 11, 3, -2),(6, 21, 2, 18));
I: Integer;
P: CS;
Row: CSMap;
begin
-- Print it the usual way.
for I in 1..3 loop
for P in CS loop
Put(A(I)(P));
Put(" ");
end loop;
New_Line;
end loop;
New_Line;
end Arr4;
这里CS和CSMap究竟是什么意思?
答案 0 :(得分:5)
CS是枚举,CSMap是由该枚举索引的数组。 A是一组CSMaps。
他们的意思不清楚,因为CS
是变量名称的可怕的选择(在某些我们没有的上下文之外):Computing_Student
将是一个更好的例子,并准备你,比如,期末考试成绩。即使您正在为具有1K内存的目标编译Ada,较长的名称也不会影响对象大小。
但CSMap
或Computing_Student_Map
可以代表一项考试中的分数,A
可以代表每个学期的考试分数。一个学生如何得分-2不是我的关注!
程序只是一对打印所有值的嵌套循环:A(I)选择一个CSMap,(P)访问它的第P个成员。
这样清楚了吗?
编辑:还要注意导致潜在错误的不良做法:
for I in 1..3 loop
意图是可能来索引数组A中的所有值。如果是这样,最好通过编写
来保证for I in A'range loop
然后当有人改变数组A的大小时,循环仍然按预期工作......