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

Ada程序报错:'actual for item must be a variable'原因及解决咨询

问题分析与解决

报错原因

Ada子程序中,Int1和Int2被声明为in Integer模式,这类参数属于只读输入参数,只能读取其值,无法在子程序内部修改。而Get过程需要接收一个可写的变量来存储用户输入的数值,因此传入in模式的参数会触发"actual for item must be a variable"错误。

解决方法

将Int1和Int2的参数模式改为in out,这种模式允许子程序读取参数的初始值并修改它,满足Get过程的要求。修改后的子程序代码如下:

procedure Summera(Int1: in out Integer;
             Int2: in out Integer;
             Summa: out Integer) is 
      
   begin
      Put("Mata in ett heltal: ");
      Get(Int1);
      Put("Mata in ett heltal: ");
      Get(Int2);
      Summa:= Int1 + Int2;
      Put("Du matade in heltalet: ");
      Put(Int1, Width=>0);
      Put(" och heltalet: ");
      Put(Int2, Width=>0);
      Put(" och summan blev ");
      
   end Summera; 

主程序代码无需修改(注意Ada主程序的结束语句通常为end;,如果你的程序名是program,end program;也可以正常编译):

Int1, Int2: Integer; 
Summa: Integer; 

begin 
   Summera(Int1, Int2, Summa);
   Put(Summa);
end program;

补充说明

  • in模式:仅用于输入,参数值在子程序内不可修改,适合不需要改变的输入数据。
  • in out模式:用于既需要输入初始值、又需要输出修改后值的参数,相当于双向传递。
  • out模式:仅用于输出,子程序会覆盖参数的初始值,适合只需要返回结果的场景(比如这里的Summa)。

内容的提问来源于stack exchange,提问作者Zeptuz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:15:29