CS和CSMap是什么意思?

时间:2014-02-28 09:32:33

标签: ada

我是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究竟是什么意思?

1 个答案:

答案 0 :(得分:5)

CS是枚举,CSMap是由该枚举索引的数组。 A是一组CSMaps。

他们的意思不清楚,因为CS是变量名称的可怕的选择(在某些我们没有的上下文之外):Computing_Student将是一个更好的例子,并准备你,比如,期末考试成绩。即使您正在为具有1K内存的目标编译Ada,较长的名称也不会影响对象大小。

CSMapComputing_Student_Map可以代表一项考试中的分数,A可以代表每个学期的考试分数。一个学生如何得分-2不是我的关注!

程序只是一对打印所有值的嵌套循环:A(I)选择一个CSMap,(P)访问它的第P个成员。

这样清楚了吗?

编辑:还要注意导致潜在错误的不良做法:

for I in 1..3 loop

意图是可能来索引数组A中的所有值。如果是这样,最好通过编写

来保证
for I in A'range loop

然后当有人改变数组A的大小时,循环仍然按预期工作......