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究竟是什么意思?
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的大小时,循环仍然按预期工作......
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |