CS和CSMap是什么意思?

0 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;
Run Code Online (Sandbox Code Playgroud)

CS和CSMap究竟是什么意思?

Bri*_*ond 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
Run Code Online (Sandbox Code Playgroud)

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

for I in A'range loop
Run Code Online (Sandbox Code Playgroud)

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