You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 19:33:12