Ada 实例化泛型过程时出错

Ada 实例化泛型过程时出错,ada,Ada,你好,我正在创建一个通用程序,它将交换2个数字,下面是我的代码,请帮助我修复它。。我是新的ada编程人员,请跳过任何打字错误,因为我正在发布此任务frm mobile我的系统上没有网络 交换广告 generic type t is private; procedure swap(l,r:in out t); swap.adb procedure swap(l,r:in out t) is temp:t:=l; begin l:=r; r:=temp; end swap;

你好,我正在创建一个通用程序,它将交换2个数字,下面是我的代码,请帮助我修复它。。我是新的ada编程人员,请跳过任何打字错误,因为我正在发布此任务frm mobile我的系统上没有网络

交换广告

generic
   type t is private;
procedure swap(l,r:in out t);
swap.adb

procedure swap(l,r:in out t) is
   temp:t:=l;
begin
   l:=r;
   r:=temp;
end swap;
亚洲开发银行

v with swap;
procedure swap_main is
   procedure swap_i is new swap(t);
   i1,i2:interger;
begin
   swap_i(i1,i2):
end swap_main;

撇开简单的输入错误(
v with swap
integer
,以及最后一个冒号)不谈:实例化泛型的问题是,您必须为形式提供实际值

在这种情况下,您可以说(将大小写和间距调整到普遍接受的标准后)

其中T是形式参数,它期望赋值和相等运算符
“=”
在实际中可用

但是在你的实例中你说

procedure Swap_I is new Swap (T);
编译器说

第二条消息解释了第三条消息。第四条消息是编译器试图提供帮助的失败尝试(
Swap\uu
毕竟不是合法标识符)

第一条消息是关键:对于
Swap\u Main
来说,没有任何类型的
T
可以作为
Swap
的形式参数
T
的实际值

总的来说,我认为你应该写信

procedure Swap_I is new Swap (Integer);
给你一个能够交换整数的过程

“命名协会”(namedassociation)将使您的意图更加明确:

procedure Swap_I is new Swap (T => Integer);

我们不是读心术的人。你会遇到什么错误?是编译时错误还是运行时错误?问题出在哪一行?
procedure Swap_I is new Swap (Integer);
procedure Swap_I is new Swap (T => Integer);