在Ada中使用枚举类型作为循环索引并编写对应case语句
修正后的Ada代码实现
核心需求是遍历枚举类型a_rule的所有取值,对每个值执行对应操作。原代码存在两处关键语法错误,以下是修正后的完整实现:
包规范(p.ads)
package P is type A_Rule is (Row, Col, Cube); end P;
注:原代码中声明的rule : a_rule;属于多余内容,遍历枚举所有值无需单独声明变量,循环会自动生成迭代变量
包体(p.adb)
package body P is begin -- 遍历枚举类型A_Rule的所有取值 for Rule_Iter in A_Rule loop case Rule_Iter is when Row => -- 此处添加Row对应的操作逻辑 null; when Col => -- 此处添加Col对应的操作逻辑 null; when Cube => -- 此处添加Cube对应的操作逻辑 null; end case; end loop; end P;
关键错误修正说明
- For循环语法:原代码
for ? in rule loop错误,遍历枚举所有值需要指定枚举类型(A_Rule)而非单个变量,循环会自动创建迭代变量(示例中为Rule_Iter),依次取遍枚举的每个值。 - Case语句语法:原代码
case of ?不符合Ada语法,正确格式为case 变量 is,无需of关键字,每个when子句后接=>和对应逻辑。
内容的提问来源于stack exchange,提问作者Michael Ayres
相关产品推荐
相关产品推荐

