Ada中交换程序的说明

时间:2014-09-10 01:15:53

标签: ada

我想知道这个交换过程在Ada 95中如何工作,这里是代码:

Procedure swap (x,y in out float) is
    t:float
begin
    t:=x; x:=y; y;=t;
end;

请解释每个步骤,尤其是swap (x,y in out float)in out代表的内容。

感谢。

1 个答案:

答案 0 :(得分:3)

xy是两个float变量,它们都在传递给函数并传递 out (返回)给来电者。

这是一种通过引用指定类型的方式(我希望C最终会有这样做以避免指针复杂性),以便更改为x和{{1在过程中回显给调用者。当然,替代方法是传递值,其中函数中的变量是本地副本,并且不会影响调用者中的实际变量。

我通过引用说出类型的调用,因为事实并非如此。一旦在过程

中更改参数,通过引用进行的真正调用将使传递的参数发生变化

在Ada中,对过程中变量的更改不会立即反映回调用者。相反,它们会在成功的程序退出时被复制回来。举例来说,异常不会涉及对传入的参数的更改,即使它们在异常发生时已在过程中被修改过。

除此之外,交换值是一个简单的三向传输。步骤是:

y