我想知道这个交换过程在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
代表的内容。
感谢。
答案 0 :(得分:3)
x
和y
是两个float
变量,它们都在中传递给函数并传递 out (返回)给来电者。
这是一种通过引用指定类型的方式(我希望C最终会有这样做以避免指针复杂性),以便更改为x
和{{1在过程中回显给调用者。当然,替代方法是传递值,其中函数中的变量是本地副本,并且不会影响调用者中的实际变量。
我通过引用说出类型的调用,因为事实并非如此。一旦在过程
中更改参数,通过引用进行的真正调用将使传递的参数发生变化在Ada中,对过程中变量的更改不会立即反映回调用者。相反,它们会在成功的程序退出时被复制回来。举例来说,异常不会涉及对传入的参数的更改,即使它们在异常发生时已在过程中被修改过。
除此之外,交换值是一个简单的三向传输。步骤是:
y