Ada 实例化泛型过程时出错
你好,我正在创建一个通用程序,它将交换2个数字,下面是我的代码,请帮助我修复它。。我是新的ada编程人员,请跳过任何打字错误,因为我正在发布此任务frm mobile我的系统上没有网络 交换广告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;
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);